"这"更改点击值

时间:2016-11-15 20:17:03

标签: javascript jquery prototype-programming

如果我有以下代码:

function Something() {
    this.randomElement = $("#element");
}

Something.prototype = {

    functionOne: function() {
        console.log("hello");
    },

    functionTwo: function() {
        this.randomElement.click(function(e) {
            this.functionOne(); //this becomes pointed at randomElement
        });
    }
}

如何以干净的方式编写本文,我不必使用Something.prototype.functionOne()来替换functionTwo中的this.functionOne()?由于click事件改变了这个值?

1 个答案:

答案 0 :(得分:3)

因为this.randomElement.click( this.functionOne.bind(this) ); 绑定到被点击的项目。您需要使用bind

this.randomElement.click( $.proxy(this.functionOne, this) ); 

或jQuery的proxy

{{1}}