请看这个示例代码:
var functions = {
testFunction: function(){
console.log('testFunction()', this, this.someProperty);
}
};
functions.testFunction.someProperty = 'someValue';
functions.testFunction();
为什么第二行中的 this.someProperty 未定义?
答案 0 :(得分:2)
因为您可以通过第二个参数console.log
看到输出 - this
引用functions
对象,而不是testFunction
匿名函数。
这项任务可以满足您的需求:
functions.someProperty = 'someValue';
答案 1 :(得分:1)
var functions = {
testFunction: function(){
console.log('testFunction()', functions, functions.someProperty);
}
};
functions.someProperty = 'someValue'; // <------ you should set value to functions's property
functions.testFunction();
答案 2 :(得分:1)
试试这样: -
var functions = {
testFunction: function(){
console.log('testFunction()', functions, functions.someProperty);
}
};
functions.someProperty = 'someValue';
functions.testFunction();
答案 3 :(得分:1)
obj.method()
是obj.method.call(obj)
的语法糖。
因此当您执行functions.testFunction()
此函数内的this
引用时,调用指向functions
。
要以这种方式访问它:
var functions = {
testFunction: function(){
console.log(this.testFunction.someProperty); //"someValue"
}
};
functions.testFunction.someProperty = 'someValue';
functions.testFunction();
此article中详细解释了this
关键字。