为了账号安全,请及时绑定邮箱和手机立即绑定

哪位老师能帮我解释下下面的call([1]),apply([2]),apply({}) 是什么意思啊

哪位老师能帮我解释下下面的call([1]),apply([2]),apply({}) 是什么意思啊

吴周超 2018-08-09 23:57:43
var object = {test: {doSomeThing() {function fun1 () {return this;}return fun1();},doNextThing() {var fun2 = () => this;return fun2();},doLastThing() {return this;}}};console.log(object.test.doSomeThing()); // windowconsole.log(object.test.doSomeThing.call([1]));//这里的call([1])完全不懂是 //啥意思console.log(object.test.doNextThing.apply([2] ));console.log(object.test.doLastThing.apply({}));//
查看完整描述

1 回答

?
web阿周

TA贡献3条经验 获得超1个赞

首先你要理解,[1],[2],{}这三者,都继承自object原型,而call,apply接收的第一个参数,就是指定调用函数的this对象的指向,call([1])就代表调用这个函数时,this指向的应该是一个数组对象,因此你第一个函数doSomeThing,传入的是数组对象[1],但是es5语法中,function函数会产生自己的作用域,因此此时this打印出来又变成了window,但是es6的箭头函数不会,所以第二个函数doNextThing打印出来的是[2],同理可得第三个打印出来的就是{}

查看完整回答
反对 回复 2018-08-29
  • 1 回答
  • 0 关注
  • 1122 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信