var a = new Persion('Tom') のとき、self と this はまだ Persion を指しています。a.before().after() を実行すると、self は Window を指しています。これを保存するために self を使用したいのです。人為的に自分を変えたわけではないのに、なぜ自分の価値が変わるのか、その原理は何なのか。
補足:
は先頭の文です var self= this; デバッグ中にselfがPersionからwindowに変わっていることがわかり、前後の宣言をコメントアウトしたところ、selfが宣言されていない場合は出力が変わることがわかりました。未定義ではありませんでしたが、ウィンドウ
self 変数は before 関数で定義されていないため、ここでの self は window.self を指します。
self プロパティは、ウィンドウ自体への読み取り専用の参照を返します。 Window プロパティと同等です。
前後の _self の値は未定義です
問題があることを理解しています。私の問題はコードから抽出され、単純化されています。元のコードには非同期部分があり、これは非同期部分のウィンドウになります。デバッグ中に、先頭の文 var self= this の self が Persion から window に変わっていたので、self に何か問題があるのではないかと思いました。