0

2 つの関数を持つ js オブジェクトがあります。mySecondFunction()から呼び出す正しい方法は何myFirstFunction()ですか? this.mySecondFunction() にする必要がありますか? または MyObject.mySecondFunction()?

「this」を使用すると思いましたが、イベントハンドラー内にある場合、「this」はオブジェクトではなくDOM要素を参照します:(

var MyObject = {
  firstFunction: function() {
    whatgoeshere???.mySecondFunction();
  },

  secondFunction: function() {
    console.log('Hi!');
  }
}
4

2 に答える 2

1
 var MyObject = {
  firstFunction: function() {
    this.mySecondFunction();
  },

  secondFunction: function() {
    console.log('Hi!');
  },
  mySecondFunction: function() {
    alert('Hi!');
  }
}

MyObject.firstFunction();

上記はあなたが意図したことです

//declaring the constructor  
function MyObject() {  
    this.someProperty = 'whatever';        
}  
// declaring instance methods  
MyObject.prototype = {  
    firstFunction: function () {  
        this.secondFunction();  
    },  
    secondFunction: function () {  
        alert("Cool");  
    }  
};  

var am = new MyObject();    
am.firstFunction(); 

また、コンストラクター関数のプロパティであるプロトタイプ オブジェクトを使用して、型のメソッドを定義することもお勧めします。の値はthis、初期化しようとしている新しいオブジェクトになります。

于 2013-06-20T19:52:20.703 に答える
0

この場合、これはインスタンスではないため MyObject です。

次のようなことをした場合:

var MyObject = function() {
};

MyObject.prototype.firstFunction = function() {
    this.secondFunction();
};

MyObject.prototype.secondFunction = function() {
    console.log('Hi!');
};

var instance = new MyObject();
instance.firstFunction();

次に、新しいインスタンスを作成して使用できますthis。つまりthis、オブジェクトの現在のインスタンスを参照します。

于 2013-06-20T19:29:16.257 に答える