将onclick函数扩展到javascript类

时间:2013-09-18 03:18:09

标签: javascript class onclick

我想在JavaScript类中包含一个onclick事件,但由于onclick是类中的一个函数,this变量将无法正常工作。

如何从onclick函数修改/输出this变量?

img = new image();

function image() {
    this.width = 400;
    this.height = 600;
    document.getElementById('button').onclick = function()
    {
        alert(this.width); // alerts undefined
    };
}

请在此处查看JSfiddle:http://jsfiddle.net/ZghRv/

2 个答案:

答案 0 :(得分:1)

您可以使用bind()创建一个新函数,该函数将this设置为您传递给bind()的对象。

img = new image();

function image() {
    this.width = 400;
    this.height = 600;
    document.getElementById('button').onclick = (function()
    {
        alert(this.width); // alerts undefined
    }).bind(this);  // <---  Add bind() here to pick the value of 'this' inside onclick
}

查看JavaScript Function bind了解更多信息和互动示例。

答案 1 :(得分:0)

您还可以引用外部this

更新小提琴:

http://jsfiddle.net/ZghRv/3/