gpt4 book ai didi

Javascript类实例问题

转载 作者:行者123 更新时间:2023-11-30 18:48:02 25 4
gpt4 key购买 nike

我正在尝试弄清楚 JavaScript OOP,我尝试了以下方法,但当我需要更改特定实例上的类变量时失败了。

我有一个默认值的“myname”,然后我为特定实例更改它,并在事件处理程序中打印它的值。我得到的是默认值,而不是更新后的值。

我如何更改代码以支持此功能?

谢谢

function myClass () {}

myClass.prototype =
{

myname : "test",

test : function (filename)
{
var img = createSomething ();
img.container = this;

img.addEventListener('click', this.onClick);
},


onClick : function (e)
{
trace ("click: " + e.source.container.myname); // this will print "test" and not "dave"
}

};



var instance = new myClass ();

instance.myname = "dave";

instance.test();

最佳答案

我不知道 trace()e.source 是什么,但是当我以你的例子为例,并使用 console.log()e.target.container.myname,它工作得很好。

示例: http://jsfiddle.net/L2UMC/2/

(注意该示例仅适用于支持 addEventListener 的浏览器)

function myClass() {}

myClass.prototype = {

myname: "test",

test: function(filename) {
var img = new Image();
img.src = "http://dummyimage.com/120x90/f00/fff.png&text=my+image"
img.container = this;

img.addEventListener('click', this.onClick, false);
document.body.appendChild(img);
},
onClick: function(e) {
console.log("click: " + e.target.container.myname);
}
};
var instance = new myClass();
instance.myname = "dave";
instance.test();

编辑:按照@Felix Kling 的正确建议,通过添加第三个参数使addEventListener 更加兼容。 .

关于Javascript类实例问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4838631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com