Javascript"这个"正在改变调用事件

时间:2017-04-21 11:18:25

标签: javascript this ecmascript-5

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(); //在这种情况下"这个"将指向myObject.hence" this"按预期在这里工作。

document.getElementById(" button2")。onclick = myObject.myFunction.bind(myObject);             //在这种情况下,当我们将myObject绑定到myFunction然后"这个"将指向myObject。然后"这"按预期工作。

document.getElementById(" button1")。onclick = myObject.myFunction;             //在这种情况下,我希望"这个"应该指向myObject.But我得到这个为undefined.why?

1 个答案:

答案 0 :(得分:0)

因为事件侦听器绑定到元素(事件侦听器内的this将引用触发事件的元素)。当然,除非事件监听器使用.bind 显式绑定到另一个事物。