var Test = (function() {
return {
someValue: 69,
staticMethod: function(){
return this.someValue;
}
}
}());
console.log(Test.staticMethod());
var doIt = Test.staticMethod
console.log(doIt())
输出:
69
undefined
预期:
69
69
为什么this
在第二次调用的上下文中不存在?
答案 0 :(得分:1)
doIt
对同一函数staticMethod
的引用:
function(){
return this.someValue;
}
this
基本上是.
之前的对象
如果是此次通话:Test.staticMethod()
,则为Test
但是在这里:doIt()
没有.
,所以在点之前没有对象。
在这种情况下,this
被分配给全局对象(如果不是严格模式)。全局对象(浏览器中为window
)没有名为someValue
的属性,因此undefined
已注销。