__parent__に初めて触れてみますた

サイ本のp.206に載っている__parent__プロパティについて。


名前からしてもわかるように、
継承チェーンのkeyとなる__parent__なんですが、
p.207の例(__parent__に親オブジェクトと異なるオブジェクトを代入)
を忠実に実行しても、記載通りの結果になりませんでした。。


結局、(firefoxでは?) __parent__に代入できないという結論になったのですが。


この実験の中で、色々おもしろい結果が得られたので、少しご紹介。


例1:

var f1 = function temp () {
  var a = 1;
  alert(a);
};

var f2 = function() {
  var b = 1;
  alert(b);
}

alert(f1.__parent__);              //(1)
alert(f1.__parent__.toSource()); //(2)
alert(f2.__parent__);             //(3)
alert(f2.__parent__.toSource()); //(4)

とすると、


(1)の結果

[object Object]

(2)の結果

({temp: (function temp(){var a=1;alert(a);})})


また、
(3)の結果

[object Window]

(4)の結果

{}

わかったこと

var f1 = function temp ()
var f2 = function()


上の2つの書き方では、継承ツリーの構成が1段違って、
f1では、tempというプロパティをもったオブジェクトが__parent__入っているが、
f2では、__parent__にはWindowが直接入っている。


例2:(書きかけ)
javascriptの最適化について。(まだ十分理解できてない。。今日勉強!w)

id:amachang ありがとうございました! m(_ _)m