假设我有一个非常简单的PrototypeJS类,如下所示:
var Foo = Class.create({
initialize: function() {
this.bar = 'bar';
},
dostuff: function() {
$$('.enabled').each( function(elem) {
alert(this.bar); //FAIL
});
}
});这会失败,因为传递给.each()的函数不知道这是指什么。
如何从函数内部访问类的bar属性?
发布于 2009-07-07 22:53:14
您可以使用原型绑定函数,它“将函数的执行范围锁定为对象”。
var Foo = Class.create({
initialize: function() {
this.bar = 'bar';
},
dostuff: function() {
$$('.enabled').each( function(elem) {
alert(this.bar);
}.bind(this)); // Set the execution scope to Foo
}
});发布于 2009-07-07 20:55:32
尝试:
dostuff: function() {
var that = this;
$$('.enabled').each( function(elem) {
alert(that.bar); //FTW
});
}或者,将上下文传递给each()
dostuff: function() {
$$('.enabled').each( function(elem) {
alert(this.bar); //FTW
}, this); // Context
}发布于 2009-07-07 20:55:46
嗯,我不是原型专家,但我认为这可能有助于回答你的问题-- http://www.duncangunn.me.uk/dasblog/2009/05/26/ObjectorientedEventHandlingInJavascript.aspx
如果这样做了,如果没有,请告诉我,为浪费你的时间道歉!
https://stackoverflow.com/questions/1094782
复制相似问题