美文网首页
箭头函数中this的指向

箭头函数中this的指向

作者: may505 | 来源:发表于2021-04-14 14:33 被阅读0次

箭头函数在平时开发中用着非常爽,箭头函数有什么特点呢

  • 箭头函数不能够当做构造函数使用
  • 箭头函数没有arguments对象
  • 箭头函数不能够用yield,不能用作generator函数
  • 箭头函数没有prototype属性,prototype属性值为空
  • 箭头函数的this总是指向最近一层的作用域

举个例子,总所周知普调函数的this指向都是谁调用他指向谁

var name ="张三"
var obj = {
    name: '李四',
    getName: function() {
        console.log(this.name)
        return function(){
            console.log(this.name)
        }
    }
}
obj.getName()()
// 输出结果
// 李四
// 张三

因为obj.getName()相当于是obj调用的,所以里面的this指向obj,obj.getName()()相当于是window调用的

obj.getName()()
// 等价于
var fn = obj.getName()
window.fn()

另外一个例子

var name ="张三"
var obj = {
    name: '李四',
    getName: function() {
        console.log(this.name)
        return s = () =>{
            console.log(this.name)
        }
    }
}
obj.getName()()
// 输出结果
// 李四
// 李四

在getName中返回一个箭头函数,因为箭头函数是在getName中,getName是它的一个上最近的一个函数作用域,所以箭头函数中的this指向obj。另外一个例子

var name ="张三"
var obj = {
    name: '李四',
    getName: () => {
        console.log(this.name)
        return s = () =>{
            console.log(this.name)
        }
    }
}
obj.getName()()

会输出什么结果,大部分人可能跟我一样会认为会输出

李四 李四  // 其实最终的结果是张三 张三

刚开始都以为getName这个箭头函数是指向的object,其实不然,它是指向window的。箭头函数的this是 根据该函数的作用域指向的对象,作用域是指函数内部,getName作用域其实是指最外层的js环境,因为getName没有被函数包裹,最外层又是指向window

  • 箭头函数使用call applay等改变this的指向也是没有用的,比如
var name ="张三"
var obj = {
    name: '李四',
    getName: () => {
        console.log(this.name)
    }
}
var obj1 = {
    name: '李四',
    getName: function() {
        console.log(this.name)
    }
}
obj.getName.call({name: '王五'}) // 张三
obj1.getName.call({name: '王五'}) // 王五

相关文章

  • es6 箭头函数的this指向

    箭头函数在创建时确定了this指向。 下方例子中,箭头函数创建时this指向window,调用时也就指向了window

  • REACT 中事件处理函数传递参数的两种方式

    第一种是箭头函数传参 箭头函数没有this指向,默认是继承外部上下的this,所以箭头函数中的this指向的就是组...

  • ES6新特性(更新篇)

    首先感谢Carnia帮我指出ES6箭头函数中this指向的错误,此次主要更新箭头函数中this指向问题。 ECMA...

  • 箭头函数

    1,箭头函数定义 2,Es6 中箭头函数参数与返回值简写 补充 3,箭头函数中 this 指向 注:箭头函数中的t...

  • 箭头函数与普通函数的区别

    1.this指向不同 普通函数中的this指向 是在调用函数的时候确定的;箭头函数中的this指向 在定义函数的时...

  • this

    在箭头函数中,就算是setTimeout()方法中,this指向的也是函数所在作用域的对象 非箭头函数中,this...

  • 箭头函数中的this指向

    在window中定义的方法,es5和es6的this都一样指向window 在事件处理中的this指向 在对象方法...

  • 箭头函数中this的指向

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

  • React Native 关于箭头函数、普通函数与点击事件的调用

    箭头函数 箭头函数一个重要的好处就是对于this对象指向问题,在普通函数中this对象的指向是可变的,所以在普通函...

  • React处理事件响应机制

    一. 箭头函数 1.1 使用箭头函数的优点 1、箭头函数一个重要的好处就是对于this对象指向问题,在普通函数中t...

网友评论

      本文标题:箭头函数中this的指向

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