ここで正確に何が起こっているのかについて少し混乱しています。
この単純なコードを考えると:
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 のせいだと思います。
どんな入力でも素晴らしいでしょう!