填坑-十萬個爲何?(21)

簡介:不少概念不清或忘記,從新構建本身的知識體系。天天問本身1~多個問題。我是菜鳥 成爲大神之路!app

1. 箭頭函數 =>

var materials = [
  'Hydrogen',
  'Helium',
  'Lithium',
  'Beryllium'
];

materials.map(function(material) { 
  return material.length; 
}); // [8, 6, 7, 9]

materials.map((material) => {
  return material.length;
}); // [8, 6, 7, 9]

materials.map(material => material.length); // [8, 6, 7, 9]
複製代碼

this指向定義它的函數域,而不是運行它的函數域
② 不綁定arguments使用 ... Rest函數代替
③ 箭頭函數不能用做構造器,和 new一塊兒用會拋出錯誤。函數

var Foo = () => {};
var foo = new Foo(); // TypeError: Foo is not a constructor
複製代碼

④ 箭頭函數沒有prototype屬性。學習

var Foo = () => {};
console.log(Foo.prototype); // undefined
複製代碼

⑤經過 callapply 調用 因爲 箭頭函數沒有本身的this指針,經過 call()apply() 方法調用一個函數時,只能傳遞參數(不能綁定this),他們的第一個參數會被忽略。ui

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));         // 輸出 2
console.log(adder.addThruCall(1)); // 仍然輸出 2(而不是3 ——譯者注)
複製代碼

學習資料:
developer.mozilla.org/zh-CN/docs/…this

相關文章
相關標籤/搜索