2

このサンプル コードを見てください。

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

2 行目のthis.somePropertyが定義されていないのはなぜですか?

4

4 に答える 4

2

console.log2 番目の引数出力でわかるように、 - は無名関数ではなくthisfunctionsオブジェクトを参照するためです。testFunction

この割り当ては、あなたが望むことを行います:

functions.someProperty = 'someValue';
于 2013-09-15T11:13:14.587 に答える
1
var functions = {
 testFunction: function(){
  console.log('testFunction()', functions, functions.someProperty);
 }      
};
functions.someProperty = 'someValue'; // <------ you should set value to functions's property
functions.testFunction();
于 2013-09-15T11:13:24.300 に答える
1

このようにしてみてください:-

var functions = {
 testFunction: function(){
  console.log('testFunction()', functions, functions.someProperty);
 }      
};
functions.someProperty = 'someValue';
functions.testFunction();
于 2013-09-15T11:14:05.197 に答える
1

obj.method()のシンタックス シュガーですobj.method.call(obj)

したがって、この関数呼び出し内で参照を行うfunctions.testFunction()と、が指されます。thisfunctions

この方法でアクセスするには、次のようにします。

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

thisキーワードは、この記事でよく説明されています

于 2013-09-15T11:16:22.270 に答える