码迷,mamicode.com
首页 > 其他好文 > 详细

方法链、作用域链和原型链(一)——方法链

时间:2014-12-25 17:49:17      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:

方法链:当方法的返回值是一个对象时,这个对象还可以再调用它的方法。这种方法调用序列中,每次调用的结果都是另外一个表达式的组成部分。

比如:基于jQuery库,我们通常会写类似如下代码:

$(this).next().show().siblings("li[class!=header]").hide();

如果在设计的API中,每个方法都返回this,使用API就可以进行“链式调用”风格的编程。在这种风格的编程中,只要指定一次调用的对象,余下的方法都可以基于此方法进行调用:

shape.setX(100).setY(200).setSize(300);

 注意:this是一个关键字,不是变量,也不是属性名,不可以给this赋值。

和变量不同,this没有作用域的限制,嵌套的函数不会从调用它的函数中继承this。如果嵌套函数作为方法调用,其this的值指向调用它的对象;如果嵌套函数作为函数调用,其this值不是全局对象(非严格模式),就是undefined(严格模式)。

调用嵌套函数时,this并不会指向调用外层函数的上下文。如果想访问这个外部函数的this值,需要将this的值保存在一个变量里,这个变量和内部函数在同一个作用域内。通常用self变量保存this,如:

var o={
    m:function(){
        var self=this;
        console.log(this===o);//true
        f();
        function f(){
            console.log(this===o);//false
            console.lgo(self===o);//true
        }
    }
};
o.m();

 

方法链、作用域链和原型链(一)——方法链

标签:

原文地址:http://www.cnblogs.com/aaron-shu/p/4184849.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!