关于这里到底发生了什么有点困惑。
给出这个简单的代码:
stuff = (function(){
function extendFoo(bar)
{
$.extend(this.foo,bar);
}
this.foo = {};
return { foo : foo, extendFoo: extendFoo};
})();
按照这个简单的操作:
zz = Object.create(stuff);
zz.extendFoo({bar:'bar'});
vv = Object.create(stuff); //foo is still extended(??)
所以据我了解,对返回的对象形式 Object.create 进行的操作仍然会影响该对象的原型,因此当您创建一个新对象时,他的原型会发生变化,从而产生一个“修改”版本。
这在很多层面上似乎都是错误的,谁能解释这里发生了什么?
使用以下模式无法重现此行为:
stuff = (function(){
function setFoo(bar)
{
this.foo = bar;
}
var foo;
return { foo : foo, setFoo: setFoo};
})();
所以我怀疑 $.extend 应该归咎于此。
任何输入都会很棒!