console.log(myCounting.value);
は、実際には7
と表示されていました。これは、addメソッドが2回呼び出されたためです(コメント参照)。しかし、それは6
を印刷します。それは範囲のためですか? myCounting.add
で '呼び出し'関数を呼び出すと、そのスコープが異なるために値が変更されないことを意味しますか?私はスコープを学んでいるように誰かが説明することができます..ありがとうございます! 機能/オブジェクトの範囲
myCounting.add()
this
をあなたの最初の例では:
function Counting(){
this.value = 5;
}
Counting.prototype.add = function(){
this.value++;
}
var myCounting = new Counting();
myCounting.add(); // invoked once
function invoking(funcs){
funcs();
}
invoking(myCounting.add); //invoked twice
console.log(myCounting.value);
「呼び出し(myCounting.add.bind(myCounting));」 – dandavis