次のコードがそのような「奇妙な」結果をもたらす理由に興味があります。
var f = function() {}
$.extend(f, Object.freeze({foo1:"bar1"}));
Chrome での入力 (アップデートを参照してください - ここと下のChromeではなく、 Chromiumにあります) コンソール:
> f.foo1
Chrome コンソールの結果は次のとおりです。
> undefined
さらに、次のことを試してください。
$.extend(f, {foo2:Object.freeze([1,2,3])});
Chrome コンソールに次のように入力します。
> f.foo2
結果はさらに奇妙です。
> function Object() { [native code] }
私は何を間違っていますか?なぜ usingObject.freeze()
にこれらの意味があるのでしょうか?
更新: Chromeではなく、Chromium 18 (執筆時点での Ubuntu の最新版)。これは実装上のバグだと思います。唯一の答えを受け入れますが、ブラウザで効果を再現できます。