我正在使用JavaScript进入实际的面向对象编程,并且我遇到了两种不同的扩展现有对象原型的方法。
方法一:
Something.prototype.someFunc = function() {
// To something usefull
}
方法二(使用underscore.js):
_.extend(Something.prototype, {
someFunc: function() {
// Do the same but differently
}
}
这两种方法有什么区别?哪一个被认为“更好”?对我来说,看起来第一种方法更好,因为它使用普通的旧javascript,第二种方法是别人的实现。但另一方面,underscore.js开发人员肯定没有添加_.extend()方法?
答案 0 :(得分:6)
它们在功能上是等同的。在单个方法的情况下,我认为方法一更具可读性,但是在多个方法添加到同一原型的情况下,方法二可能更具可读性(这当然是主观的)。
RE:underscore.js开发人员肯定没有添加_.extend()方法:
_.extend还有其他用途,例如默认选项:
function (options) {
options = _.extend({ height: 80, width: 20 }, options);
...
}