作者: sonichkhk 時間: 2018-2-8 00:27 標題: 新手JS 問題
MDN見到的 不太見明白為甚會是2, 在那做了加1動作, 我改dder.add(10)和dder.addThruCall(10) 又會出2個11. 求教
var adder = {
base: 1,
add: function(a) {
var f = v => v + this.base;
return f(a);
},
addThruCall: function(a) {
var f = v => v + this.base;
var b = {
base: 2
};
return f.call(b, a);
}
};
console.log(adder.add(1)); // This would log to 2
console.log(adder.addThruCall(1)); // This would log to 2 still
作者: uKernel 時間: 2018-2-8 09:34
MDN 咪講咗arrow funtion call會ignore this,所以就算用call都唔會apply b 個base。所以f個this.base都會係1。咁v加this.base,個v係parameter pass in如果paas1咁result咪2,如果v係10咁result咪係11。
via HKEPC IR Pro v2.1.0 - Android
作者: buckethead 時間: 2018-3-9 19:02
var adder = {
base: 1,
add: function(a) {
var f = function (v) {
v + this.base;
}
return f(a);
},
addThruCall: function(a) {
var f = function (v) {
v + this.base;
}
var b = {
base: 2
};
return f.call(b, a);
}
};
咁樣睇會唔會明啲?
'this' keyword always refer to 'me', 'mine', unless there is local scope
作者: sonichkhk 時間: 2018-3-11 00:24
謝謝2位,明了
