了解this

全局作用域默认是window

console.log(this)
20170519105959.png

像这样直接打出来看到当前this指向window

function fn(){
    console.log(this)
}
20170519113631.png

在全局函数里也指向window

在对象中

var obj = {
    a:'xxx',
    b: function(){
        return this.a
    }
}
20170519121020.png

看到在obj 这个对象中 return的 this.a 这个this是obj

绑定this

1.call()

func.call(指定this, 参数1, 参数2, ...)

函数实例的call方法,可以指定函数内部this的指向(即函数执行时所在的作用域),然后在所指定的作用域中,调用该函数。


0170519150407.png

2.apply()

func.apply(指定this, [参数1, 参数2, ...])

apply方法的作用与call方法类似,也是改变this指向,然后再调用该函数。唯一的区别就是,它接收一个数组作为函数执行时的参数

3.bind()
bind方法用于将函数体内的this绑定到某个对象,然后返回一个新函数。

var add = function (x, y) {
  return x * this.m + y * this.n;
}

var obj = {
  m: 2,
  n: 2
};

var newAdd = add.bind(obj, 5);

newAdd(5)

bind方法除了绑定this对象,还将add函数的第一个参数x绑定成5,然后返回一个新函数newAdd,这个函数只要再接受一个参数y就能运行了。

ES6 函数

()=>{}

这种函数不会改变this

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 官方中文版原文链接 感谢社区中各位的大力支持,译者再次奉上一点点福利:阿里云产品券,享受所有官网优惠,并抽取幸运大...
    HetfieldJoe阅读 6,990评论 15 54
  • 特别说明,为便于查阅,文章转自https://github.com/getify/You-Dont-Know-JS...
    杀破狼real阅读 791评论 0 1
  • 与其他语言相比,函数的this关键字在JavaScript中的表现略有不同,此外,在严格模式和非严格模式之间也会有...
    codingC阅读 628评论 0 0
  • 1. this之谜 在JavaScript中,this是当前执行函数的上下文。因为JavaScript有4种不同的...
    百里少龙阅读 1,081评论 0 3
  • 坦白讲,后知后觉的浊某向来对行为艺术了解的不多,刚看新闻,一个女孩子因为一次参观便决心投身行为艺术的领域,这兴许是...
    化浊阅读 182评论 0 0

友情链接更多精彩内容