0
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
因爲在沒有對象作爲上下文的情況下調用函數。任何函數的this值都取決於執行上下文。 – adeneo
所以正確的方法是'doIt.call(Test)'?如果我不知道它是測試怎麼辦?無論如何找出它的上下文 – LearningJrDev
不是真的,上下文是你設定的任何東西,它不是預定義的。當您執行Test.staticMethod()時,您將上下文設置爲Test,在第二個示例中,您創建對該函數的引用,然後在沒有上下文的情況下調用它,因此您必須使用'call','apply'或「綁定」來設置上下文。 – adeneo