[技術討論] 新手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

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

TOP

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

TOP

謝謝2位,明了

TOP