Javascriptでは、変数は常に参照によって割り当てられることを理解しています。つまり、次のように書くと:
var a = {};
var b = a;
b.foo = 'string';
console.log(a.foo); // prints 'string'
そうです、次のコードを書くとエラーが返されます。
var a = function(){};
var b = function(){};
b.foo=a;
a.bar = b;
console.log(a); // prints { [Function] bar: { [Function] foo: [Circular] } }
a.bar が b を指し、b.foo が a を指し、その .bar パラメータが再び b を指すなど、これで問題ありません。これは循環参照です。
さて、次のことに気付きました。
var a = function(){};
var b = function(){};
b.foo=a;
a.prototype = b;
console.log(a); // prints [Function]
a.bar を a.prototype に置き換えたところ、循環参照エラーは発生しなくなりました。
これは、 Object.prototype に参照によって値を割り当てることができないことを意味していると思います。誰でも確認できますか?これはルールの例外ですか (少なくともそれが真実である場合)?
ありがとうございました !