如果我有:
var obj={
a:function(){obj.b();},
b:function(){this.a();}
};
调用对象方法与"这个"有什么区别吗?或直接引用对象本身,因为它与方法的范围相同?
答案 0 :(得分:3)
Depends中
this
可以采用多种形式,使其无法预测:
在正常的函数调用中,如funcName()
,this
是全局对象。在浏览器中,它是window
对象。
在函数使用“use strict”的普通函数调用中,this
为undefined
。
对于用作构造函数的函数,如var instance = new ConstructorFunction()
,this
将引用从该构造函数创建的实例对象。
对于对象文字,this
是包含该函数的直接对象文字。
当call(context,args...)
或apply(context,[args...])
来电时,this
是context
的任何内容。
答案 1 :(得分:2)
this
可能会根据您调用函数的方式而改变:
var funnyB = obj.b;
funnyB(); //this is window
答案 2 :(得分:0)
在您提供的对象文字上下文中,没有逻辑差异。 this
关键字指向obj
变量,因为this
是对函数是其属性/方法的对象的引用。