我注意到_.extend的实现将复制包括原型链在内的所有内容。
我注意到_.each会过滤掉原型链上的属性。
我本来希望_.extend
在默认情况下过滤掉原型链上的属性。如果是这样,_.each
可以使用两次,而不是在_.extend
.
为什么原型链没有像_.extend
它一样被过滤_.each
?
文档没有提到它是否读取原型链。
从他们的代码、_.clone
方法中,他们_.extend
用来创建一个浅拷贝。这可能是阅读原型链的真正原因_.extend
......并不是一个很好的理由。但是,除了原始对象之外,我从不使用_.extend
传递它的任何东西
_.clone 需要它的原因示例
function Base(a) {
this.a = a;
}
Base.prototype = {b: 'b'};
var obj = new Base('a')
console.log($.clone({x: 'x'}, obj))
// Most people would expect the output to be
// {x: 'x', a: 'a', b: 'b'}
// If it didn't read the prototype, it would only be
// {x: 'x', a: 'a'}