在以下代码中:
function xyz(x) {
//something
this.x = x;
}
xyz.prototype = {
a: function () {
//do something
},
b: function () {
//pre
this.a();
//post
}
}
this.a()
的来电会发出method not supported
的警告。所以我尝试使用xyz.prototype.a.call(this)
代替。但它不保持x的值。如何从其他方法中调用一个类的方法?
答案 0 :(得分:2)
鉴于你的代码,如果你写:
var myXyz = new xyz("hello");
然后调用
myXyz.b();
应该正确地到达原型上的“a()”函数。但是,如果你这样做:
var otherB = myXyz.b;
otherB();
然后它将不工作,因为没有上下文对象(也就是说,“b()”中的this
值将无法正确设置为“xyz”的实例“)。当函数被用作事件处理程序时,通常会发生这种情况:
something.onclick = myXyz.b;
调用事件处理程序时,不会使用“xyz”实例。因此,您可以写下:
something.onclick = function() { myXyz.b(); };
明确确保存在“xyz”对象。