結(jié)果が world ではなく hello になる理由
閉關(guān)修行中......
obj オブジェクトに書かれた str:"world" は obj.str="world" を意味するためです。これは変數(shù)ではなくプロパティです。最後に実行した obj.fun() で表示されるのは、屬性ではなく str 変數(shù)です (もちろん、これはグローバル ウィンドウの屬性でもあります)。それでわかりましたか? this.str または obj.str にアラートを付けると、「world」を取得できます。
変數(shù) str は実際には window の屬性であり、obj オブジェクトの str 屬性とは何の関係もありません。これにはスコープチェーンの問題は関係ありません。次のことを理解してください:
リーリーこの例では、関數(shù)変更で最初にグローバル変數(shù) str が再割り當(dāng)てされます。alert(str) を?qū)g行する場合は、獨自のスコープ チェーンの開始點、つまり獨自の変數(shù)內(nèi)で変數(shù) str を探します。オブジェクトが見つからない場合は、上に進(jìn)みます。レベル 1 の検索で str 変數(shù)が見つかりましたが、この時點では str が world に再割り當(dāng)てされているため、world が表示されます。