当将变量set设置为static方法时,这是未定义的

时间:2016-04-22 20:21:12

标签: javascript this

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在第二次调用的上下文中不存在?

演示:http://jsbin.com/kidefoniko/edit?js,console

1 个答案:

答案 0 :(得分:1)

doIt对同一函数staticMethod的引用:

function(){
   return this.someValue;
}

this基本上是.之前的对象 如果是此次通话:Test.staticMethod(),则为Test

但是在这里:doIt()没有.,所以在点之前没有对象。 在这种情况下,this被分配给全局对象(如果不是严格模式)。全局对象(浏览器中为window)没有名为someValue的属性,因此undefined已注销。

相关问题