javascript – JS函数:原型覆盖vs原型扩展

有时我看到这样的
JavaScript代码:

funciton MyClass () {
    // some initialization
}

MyClass.prototype = {
    constructor: MyClass,

    // other functions
}

覆盖函数原型与仅扩展原型的好处是什么:

function MyClass () {
    // some initialization
}

MyClass.prototype.doStuff = function () {
    // some code
}

在第一个示例(覆盖原型)中,我们还必须手动指定构造函数,但在第二个示例中,构造函数将自动指向该函数.在我看来,第一个例子有点好,因为我们不需要手动指定构造函数

那么为什么有些人会采用第一种方式呢?有什么优势吗?

谢谢

最佳答案 第一个示例将擦除任何先前定义的原型(如果有).第二种方法将保持它们不受影响(包括构造函数引用)但如果你有很多原型,代码质量可能会更大.

值得注意的是,如果覆盖原型对象,则不必指定构造函数引用,这只是为了方便而不经常使用.

除此之外 – 区别在于语法和解释为什么有些人更喜欢另一种方式是IMO解释为什么有些人在他们的代码中更喜欢2或4个缩进空间 – 这只是一种编码风格.

点赞