使用_.扩展函数原型
Using _.extend in Function prototype
这些天我看到很多这样的事情:
function Dog () {
this.name = 'Fido';
}
_.extend(Dog.prototype, {
bark: function() {
return 'BARK, BARK!'
},
soilChothingWithDirtyPaws: function () {
// Some intricated logic here
return 'There, I did it!';
}
});
但是结果与下面的代码不同吗?
function Dog () {
this.name = 'Fido';
}
Dog.prototype = {
bark: function() {
return 'BARK, BARK!'
},
soilChothingWithDirtyPaws: function () {
// Some intricated logic here
return 'There, I did it!';
}
}
我知道下划线的扩展函数应该做什么,但我真的不明白在对象的原型中这样做的意义-当你可以用普通的老式JS做这件事时,这意味着,我看不出为什么这里需要一个人在中间。我想知道我是否错过了一些非常棒的东西。
那有什么好处吗?
如果有人把东西清理干净就太好了。非常感谢!
_.extend
是这样定义的,
_.extend = function(obj) {
each(slice.call(arguments, 1), function(source) {
if (source) {
for (var prop in source) {
obj[prop] = source[prop];
}
}
});
return obj;
};
它所做的就是从索引1处的参数开始迭代所有元素的属性,直到最后,并将其添加到传递给它的第一个参数中。
所以,从技术上讲,你所做的会有同样的效果,但是有一个细微的区别。
当您使用_.extend
时,您正在增加Dog.prototype
对象,当您分配给它时(如在第二个示例中),您正在用其他对象替换Dog.prototype
对象。
相关文章:
- 使用方括号访问插件原型函数
- 使用setInterval调用原型函数时出现问题
- 无法从angularjs调用JavaScript原型函数
- AngularJS ng repeat显示原型函数未定义
- 在 Redux 状态下存储具有原型函数的对象
- Javascript 中的构造函数不会返回由原型函数传递的正确值
- JavaScript:在哪里放置原型函数
- 创建所有原型函数均可访问的局部变量
- 可以'这'在原型函数中未定义
- 使用特权Getter/Setter函数的JavaScript原型函数
- Javascript、node、Q promise、原型函数和“;这个“;
- 在Javascript中将对象原型函数绑定到对象
- 从node.js模块中向JSON添加原型函数
- 从另一个(包括其自身)触发一个原型函数
- Javascript原型继承原型函数调用
- JavaScript–从另一个原型函数调用原型的一个函数
- 访问原型函数中的私有成员
- 如何在AngularJS中将依赖关系传递给原型函数
- 这两种用 JavaScript 编写原型函数的方式有什么区别?
- 为什么不能使用lambda来定义原型函数