有时我会看到这样的JavaScript代码:
funciton MyClass () {
// some initialization
}
MyClass.prototype = {
constructor: MyClass,
// other functions
}
覆盖函数的原型与仅仅扩展原型有什么好处:
function MyClass () {
// some initialization
}
MyClass.prototype.doStuff = function () {
// some code
}
在第一个例子中(覆盖原型)我们还必须手动指定构造函数,但在第二个示例中,构造函数将自动指向该函数。在我看来,第一个例子更好一点,因为我们不需要手动指定构造函数
那么为什么有些人会先使用?有什么优势吗?
由于
答案 0 :(得分:2)
第一个例子将删除任何先前定义的原型(如果有的话)。第二种方法将使它们不受影响(包括构造函数引用),但如果你有很多原型,代码质量可能会更大。
值得注意的是,如果覆盖原型对象,则不必指定构造函数引用,这只是为了方便而不经常使用。
除此之外 - 区别在于语法和解释为什么有些人更喜欢其他方式是IMO解释为什么有些人在他们的代码中更喜欢2或4个缩进空间 - 它只是一种编码风格强>