用于类定义的首选JavaScript习语
Preferred JavaScript Idiom for class definition
在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: The Good Parts》和《JavaScript The Definitive Guide》这两本教科书都没有定义类,那么我怀疑它们不是等价的——如果我打算使用继承,我怀疑我需要使用prototype
。这对我来说有点模糊,有人能解释一下吗?
我知道我可以使用上述文本中建议的Object.create()
方法并以原型方式做事,但我很少看到人们在实践中这样做。
在第一个例子中,每个新对象都有自己的add()
方法副本。
在第二个示例中,每个新对象共享通过prototype
的add()
函数的一个副本。
相关文章:
- 初始化父类中的变量(JavaScript/CoffeeScript 习语)
- Javascript/JQuery中的本地语言类似于Rails中的本地语
- 如何在Javascript中对JSON字符串中的阿拉伯语进行编码/解码
- 如何在javascript中按正确的顺序连接波斯语字符和英语字符
- JavaScript 原语:相同的内存位置、新的内存位置或依赖于引擎
- 使用 javascript 或 jquery 突出显示阿拉伯语文本
- 正则表达式不允许所有特殊字符,但允许其他语言,如希伯来语 JavaScript
- 如何阻止Google使用Javascript加载的问候语被用作元描述
- 冰岛语在javascript警报框中搞砸了
- 韩语音节PHP或JavaScript罗马化器(或任何其他替代方案?)
- 代码中的原型.js和习语
- JavaScript同步Ajax请求习语
- 用于做常见事情的 JavaScript 习语
- 有没有一个更简洁的Coffeescape习语来形容这个
- Javascript - 原语如何真正工作
- 习语Javascript编码风格-何时在原型上声明函数,何时在函数构造函数内声明函数
- 用于类定义的首选JavaScript习语
- D3习语,用于在enter()上附加分组元素
- 习语AngularJS模态
- 提炼出一个常见的习语