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

标签 javascript oop prototype underscore.js

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

方法一:

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

方法二(使用underscore.js):

_.extend(Something.prototype, {
    someFunc: function() {
        // Do the same but differently
    }
}

这两种方法有什么区别?哪个被认为“更好”?在我看来,第一种方法更好,因为它使用普通的旧 javascript,而第二种方法是其他人的实现。但另一方面,underscore.js 的开发者肯定没有白加 _.extend() 方法吧?

最佳答案

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

回复:underscore.js 开发人员肯定没有白白添加 _.extend() 方法:

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

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

关于javascript - _.extend(Something.prototype, someObj) 和 Something.prototype.someFunc = someFunc 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15474275/

相关文章:

javascript - 模糊触发Change事件

java - 迷惑与势是有关系的

javascript - 看不到从子对象添加到原型(prototype)的属性

javascript - 下划线模板和其他html文件如何绑定(bind)?

javascript - 如何缩小自定义Chartjs水平线的高度并增加线宽?

python - Python 中的 @staticmethod 和 @classmethod

javascript - for-in JavaScript 语句中的 IE8 错误?

javascript - 在 JavaScript 中定义公共(public)字段的首选方式 : on prototype or constructor?

javascript - ng-repeat 内的 angularjs ng-model 性能较差

c++ - 用于赋值的参数化构造函数