美文网首页工作生活
箭头函数的特点

箭头函数的特点

作者: 泉泉泉泉泉泉 | 来源:发表于2019-06-30 16:11 被阅读0次
  • 不绑定arguments,用rest参数…解决
  • 本身没有this的概念,捕获其所在上下文的 this 值,作为自己的 this 值
  • 箭头函数没有原型属性(prototype)
  • 箭头函数不能当做Generator函数,不能使用yield关键字
  • 箭头函数不能换行
  • 箭头函数不能使用new(会报错)
  • 箭头函数有constructor、length属性
  • 箭头函数可以立即执行

下面一波栗子走起,读者自己对号入座:
栗子一(请在浏览器环境下测试,不要使用node)

const A = () => {
  console.log(arguments)
}
A()
const B = (...args) => {
  console.log(args)
}
B()

栗子二

var obj = {
  age: 18,
  a: function () {
    console.log(this.age)//18
  },
  c: () => {
    console.log(this)//window
    console.log(this.age)//undefined
  },
  d: function () {
    return () => {
      console.log(this)//obj{}
      console.log(this.age)//18
    }
  }
}
obj.a()
obj.c()
obj.d()()
obj.d().call({ age: 20 })//18

箭头函数会捕获其所在上下文的 this 值,作为自己的 this 值;
但是我觉得这条和上条其实是一条,还是捕获所在的上下文,比如下面这个例子:c是一个箭头函数,然后它的 this是指向window,这是为什么呢,因为箭头函数捕获的是obj{}这个对象的环境,然后这个环境的this指向的是window,就相当于上一条的例子:在d方法里面return的那个箭头函数捕获的是c:function(){}这个环境的this,而这个环境的this是obj。
栗子三

const C = (...args) => {
  console.log(args)
}
C.call(null,1)//[ 1 ]
C.call(this,1)//[ 1 ]
C.call(1,1,2,3)//[ 1, 2, 3 ]
C.apply(1,[1,2,3])//[ 1, 2, 3 ]
console.log(C.prototype)//undefined

箭头函数的this永远指向其上下文的 this,任何方法都改变不了其指向,如call(), bind(), apply(),比如栗子二中obj.d().call({ age: 20 })//18,再来看稍微复杂的栗子:

var obj1 = {
  age: 18,
  a: function (add) {
    return (() => add + this.age)();
  },
  b: function (add) {
    var fn = v => v + this.age;
    var o = { age: 20 }
    return fn.call(o, add)
  }
}
console.log(obj1.a(1))//19
console.log(obj1.b(1))//19

PS:
箭头函数不能当做Generator函数,不能使用yield关键字
箭头函数不能换行SyntaxError: Unexpected token =>
普通函数的this指向调用它的那个对象

相关文章

  • 箭头函数和数组

    箭头函数&数组 箭头函数 特点: 没有 this 没有 arguments 没有prototype在箭头函数中使用...

  • 箭头函数中this的指向

    箭头函数在平时开发中用着非常爽,箭头函数有什么特点呢 箭头函数不能够当做构造函数使用 箭头函数没有argument...

  • Jquery 创建对象 箭头函数

    创建对象的方式: 箭头函数特点:

  • 箭头函数的特点

    不绑定arguments,用rest参数…解决 本身没有this的概念,捕获其所在上下文的 this 值,作为自己...

  • 箭头函数

    箭头函数 特点:1、this指向离自己最近的外层作用域的对象;2、不能当做构造函数使用(箭头函数是匿名函数,没有函...

  • ES6

    1.模版字符串:`String` 2.对象解构赋值 3.函数扩展:rest参数 4.箭头函数 箭头函数的特点 4....

  • 你不知道的javaScript箭头函数,this只是冰山一角

    导读 如果你查阅了javascript箭头函数的资料,大抵会得出这样的结论:1、箭头函数最大的特点是没有this,...

  • 怀教网络面试题

    如何对网站的文件和资源进行优化? es6箭头函数的特点 需要注意的是, 箭头函数没有自己的this、argumen...

  • es6总结(持续更新es6概念和实战中用法)

    1.箭头函数 箭头函数最直观的三个特点: 1.不需要function关键字来创建函数2.省略return关键字3....

  • 箭头函数有哪些特点?

    没有this 不能使用new 构造函数 不绑定arguments,用rest参数…解决 捕获其所在上下文的 thi...

网友评论

    本文标题:箭头函数的特点

    本文链接:https://www.haomeiwen.com/subject/ylppcctx.html