Javascript访问同一类的功能

时间:2011-10-01 12:55:43

标签: javascript

在以下代码中:

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的值。如何从其他方法中调用一个类的方法?

1 个答案:

答案 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”对象。