,如果我有:调用对象的成员 - 的JavaScript
var obj={
a:function(){obj.b();},
b:function(){this.a();}
};
有没有在调用对象的方法与“本”或直接引用该对象本身,因为它是在同一范围内的方法有什么区别?
,如果我有:调用对象的成员 - 的JavaScript
var obj={
a:function(){obj.b();},
b:function(){this.a();}
};
有没有在调用对象的方法与“本”或直接引用该对象本身,因为它是在同一范围内的方法有什么区别?
取决于
this
可以采取多种形式,使之成为不可预知的:
在一个正常的函数调用,就像funcName()
,this
是全局对象。在浏览器中,它是window
对象。
在函数使用“严格使用”的正常函数调用中,this
是undefined
。
对于用作构造函数的函数,如var instance = new ConstructorFunction()
,this
将引用从该构造函数创建的实例对象。
对于对象文字,this
是包含该函数的直接对象文字。
当由call(context,args...)
或apply(context,[args...])
调用时,this
是什么context
是。
this
可以取决于你如何调用该函数改变:
var funnyB = obj.b;
funnyB(); //this is window
在您提供的对象文本语境,没有逻辑的区别。 this
关键字指向obj
变量,因为this
是该对象的引用,该函数是属性/方法。