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() 方法?

4

1 回答 1

6

它们在功能上是等效的。在单一方法的情况下,我认为方法一更具可读性,但在同一个原型中添加多个方法的情况下,方法二可能更具可读性(这当然是主观的)。

回复:underscore.js 开发人员肯定不会无缘无故添加 _.extend() 方法:

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

function (options) {
  options = _.extend({ height: 80, width: 20 }, options);
  ...
}
于 2013-03-18T10:34:30.463 回答