对象中的函数和对“this”属性的访问 - 失败

时间:2013-09-15 11:09:29

标签: javascript scope

请看这个示例代码:

var functions = {
 testFunction: function(){
  console.log('testFunction()', this, this.someProperty);
 }      
};
functions.testFunction.someProperty = 'someValue';
functions.testFunction();

为什么第二行中的 this.someProperty 未定义?

4 个答案:

答案 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关键字。