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