JS函数:原型覆盖与原型扩展

时间:2013-12-25 19:00:37

标签: javascript prototype prototypal-inheritance

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

funciton MyClass () {
    // some initialization
}

MyClass.prototype = {
    constructor: MyClass,

    // other functions
}

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

function MyClass () {
    // some initialization
}

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

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

那么为什么有些人会先使用?有什么优势吗?

由于

1 个答案:

答案 0 :(得分:2)

第一个例子将删除任何先前定义的原型(如果有的话)。第二种方法将使它们不受影响(包括构造函数引用),但如果你有很多原型,代码质量可能会更大。

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

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