_.extend(Something.prototype, someObj) 和 Something.prototype.someFunc = someFunc 有什么区别?

9

我正在学习使用JavaScript进行面向对象编程,遇到了两种不同的扩展现有对象原型的方法。

第一种方法:

Something.prototype.someFunc = function() {
    // To something usefull
}

方法二(使用underscore.js):
_.extend(Something.prototype, {
    someFunc: function() {
        // Do the same but differently
    }
}

这两种方法有什么区别?哪一种被认为是“更好”的呢?在我看来,第一种方法更好,因为它使用了简单的javascript代码,而第二种方法则是其他人的实现。但另一方面,underscore.js开发者肯定不是无缘无故地添加了_.extend() 方法吧?
1个回答

6

它们在功能上是等价的。对于单个方法,我认为方法一更易读,但是对于添加到同一原型中的多个方法,方法二可能更易读(当然这是主观的)。

关于underscore.js开发人员肯定不是无缘无故地添加_.extend()方法:

_.extend还有其他用途,例如默认选项:

function (options) {
  options = _.extend({ height: 80, width: 20 }, options);
  ...
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接