最近、JavaScript のオブジェクト指向プログラミングについて学び始めました。私が理解したのは、変数を参照するとき、実際には実際の値ではなく、メモリ内の場所を参照するということです。そのため、インスタンスをコピーすることになっているすべての " return this " メソッドが機能しません。
したがって、コード例:
//An example object with a simple property and
//failing "copy" function.
function MyObject()
{
this.myProperty = 123;
this.copy = function() { return this; };
}
var iOne = new MyObject();
var iTwo = iOne.copy();
iTwo.myProperty = 321;
「copy」メソッドが値ではなく参照を返したため、iOne と iTwo の両方の「myProperty」プロパティは 321 に等しくなりました。この動作は予期されたものであり、すべて問題ありません。
ここで、ネイティブ オブジェクト タイプである Number を使用して同じことを試みました。よりオブジェクト指向のプログラマーフレンドリーな方法で、そのインスタンスを作成しましょう:
var iOne = new Number(123);
var iTwo = iOne; //Equals "iTwo = iOne.copy()", except there isn't a copy method
iOne = 321;
そして今、恐ろしいことが起こりました。iOne は 321 ですが、iTwo はその値を維持し、123 のままです。
この動作が何によって引き起こされているのかわかりません。多分 Number はある種の「特別な」ものですか?それに関連付けられた 10 進数は、単なるプロパティ以上のものなのでしょうか? それとも、経験の浅いプログラマーの生活を楽にするためのものなのでしょうか? 最後のオプションは演算子に関連しています。誰かがそれについて何か知っている場合は、JavaScript を理解する私の方法が崩れないようにしてください。