0

我注意到_.extend的实现将复制包括原型链在内的所有内容。

我注意到_.each会过滤掉原型链上的属性。

我本来希望_.extend在默认情况下过滤掉原型链上的属性。如果是这样,_.each可以使用两次,而不是在_.extend.

为什么原型链没有像_.extend它一样被过滤_.each

4

1 回答 1

1

文档没有提到它是否读取原型链。

从他们的代码、_.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'}
于 2013-06-28T20:05:58.750 回答