在JavaScript中定义类的首选习惯用法是什么?我可以为复数定义构造函数,如下所示:
function Complex(real, imag) {
this.real = real;
this.imag = imag || 0.0;
this.add = function(other) {
this.real += other.real;
this.imag += other.imag;
return this;
}
}
或者我可以做以下事情:
function Complex(real, imag) {
this.real = real;
this.imag = imag || 0.0;
}
Complex.prototype = {
add : function(other) {
this.real += other.real;
this.imag += other.imag;
return this;
}
}
由于教科书 JavaScript:好的部分和 JavaScript的权威指南都没有定义类的第一种方式,我怀疑这些是不是等价的 - 我怀疑如果我计划使用继承,我需要使用prototype
。这对我来说似乎有点模糊 - 任何人都可以澄清这个吗?
我知道我可以使用前面提到的文本中建议的Object.create()
方法,并以原型的方式做事,但我不会在实践中看到人们这样做。
答案 0 :(得分:0)
在第一个示例中,每个新对象都有自己的add()
方法副本。
在第二个示例中,每个新对象通过add()
共享prototype
函数的单个副本。
显然后者更有效率。