填坑-十万个为何?(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

相关文章
相关标签/搜索