首页 > 代码库 > 方法链、作用域链和原型链(一)——方法链
方法链、作用域链和原型链(一)——方法链
方法链:当方法的返回值是一个对象时,这个对象还可以再调用它的方法。这种方法调用序列中,每次调用的结果都是另外一个表达式的组成部分。
比如:基于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();
方法链、作用域链和原型链(一)——方法链
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。