重複の可能性:
自己定義関数参照が古い関数を指し続ける理由
私はJavaScriptの参照動作にかなり混乱しています。このコードを見てください。新しいメモリの場所を作成せずに参照を渡す際の JavaScript は非常に明確です。
Human.prototype = Monkey.prototype;
Human.prototype.name = "human";
Human.prototype.work = "love";
Joker.prototype = Human.prototype;
Joker.prototype.name = "joker";
Joker.prototype.act = "awesome";
joker = new Joker ();
human = new Human ();
human.name = 'joker';
これを見てください。javascript が 2 つの別々のメモリ ロケーションを scareMe と prank 用に作成していることは明らかです。
var scareMe = function () {
alert("Boo!");
scareMe = function () {
alert("Double boo!");
};
};
var prank = scareMe;
prank(); // "Boo!"
prank(); // "Boo!"
scareMe(); // "Double boo!"
この動作を理解するのを手伝ってください。