2010-12-17 7 views
0

次のスニペットではどうやってfalseになるのでしょうか?兄弟の親ドメインApplicationDomains not ... how&why

var child1:ApplicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain); 
var child2:ApplicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain); 

var same:Boolean = (child1.parentDomain === child2.parentDomain); 
trace(same); 

答えて

2

、彼らは同じオブジェクトではありませんコンストラクタに引数として渡されcurrentDomainあるいくつかのプロパティを共有していても、あなたは厳密な等価演算子を使用していて、2つの新しいオブジェクトを作成していますあなたが最初

var temp:ApplicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain); 

を作成した場合、その後child1のとchild2のようにこれを割り当てられ、その後、私はあなたが別の結果を取得したい賭けるだろう互いに対して彼らのparentDomainsをご確認ください。私はそこにブレークポイントを投げ、実際に何が起こっているのかを判断するために、child1/child2とchild1.parentDomainとchild2.parentDomainの両方のメモリアドレスを調べます。残念なことにApplicationDomainオブジェクトは、フラッシュのクローズドソース部分の

+0

ありました。 – user546595

+0

var parent:ApplicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain); \t \t \t var child1:ApplicationDomain = new ApplicationDomain(parent); \t \t \t var child2:ApplicationDomain = new ApplicationDomain(parent);同じ \t \t \t \t \t \t VAR:ブール=(child1.parentDomain == child2.parentDomain)。 \t \t \tトレース(同じ); – user546595

関連する問題