0
var myObject = {
myFunction : function(){
var randomizer = Math.random() * 10;
if(randomizer > 5){
this.myGreaterThanFunction();
}else{
this.myLesserThanFunction();
}
},
myGreaterThanFunction: function(){
document.getElementById("result").innerHTML = "randomizer number is greater than 5";
},
myLesserThanFunction: function(){
document.getElementById("result").innerHTML = "randomizer number is less than 5";
}
};
myObject.myFunction(); //この場合、 "this"はmyObject.henceを指します。 "this"はここで期待通りに動作します。Javascript「この」イベントが呼び出されるときに変更されます。
のdocument.getElementById( "ボタン2")のonclick = myObject.myFunction.bind(myObjectという)。 //この場合、myObjectをmyFunctionにバインドするとき、「this」はmyObjectを指し示し、「this」は期待どおりに機能します。
document.getElementById( "button1")。onclick = myObject.myFunction; //この場合、「this」はmyObjectを指しているはずです。しかし、これは未定義です。なぜですか?
簡略化のため、どこかで 'onclickCallback()'と呼ばれ、 'this'を何も設定しません。 – deceze
インターネットで検索すると2分で答えが見つかります。それに応じて関数の開始時に任意の変数にコンテキストを保存してください。あなたはあなたが望む文脈の中で関数を呼び出すためにbindまたはcallを使うことができます –
@deceze _to nothing _ ???私はそれが要素に「これ」を設定すると思う。 –