我有以下功能:
var Setup = function() {
var that = this;
this.x = 60;
Setup.prototype.Loop = function() {
console.log(this.x); // 1: returns 'undefined'
console.log(Setup.x); // 2: returns 'undefined'
console.log(hi.x); // 3: returns '60'
console.log(that.x); // 4: returns '60'
}
}
var hi = new Setup();
我想知道从this.x
函数访问Setup.prototype.Loop
构造函数的正确的方式是什么?
我尝试了四种方法(见上文):只有第三和第四行给出了我想要的结果。不可否认,行号。 3不是最好的方法,因为它依赖于对象hi
。行号4似乎是我能想到的最好的东西。
我得到了它的工作,但我正在努力学习最好的做事方式。有没有其他方法或更好的方法来做到这一点?
另外,我想这是一个必须提出的问题,但不知怎的,我找不到找到问题的话。另外,如果我在这里和那里使用了一些错误的术语,请原谅我。
感谢您的回复!
答案 0 :(得分:2)
通常原型函数应该在构造函数之外定义,this.x
是访问变量的正确方法。
var Setup = function() {
this.x = 60;
};
Setup.prototype.Loop = function() {
console.log(this.x);
};
(new Setup()).Loop(); // 60
答案 1 :(得分:1)
原型应该在构造函数之外设置,以便在创建新实例时可用。
var Setup = function () {
var that = this;
this.x = 60;
}
Setup.prototype.Loop = function () {
console.log(this.x); // 1: returns 'undefined'
console.log(Setup.x); // 2: returns 'undefined'
console.log(hi.x); // 3: returns '60'
console.log(that.x); // 4: returns '60'
}
var hi = new Setup();