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

var object = {

test: {

doSomeThing() {

function fun1 () {

return this;

}

return fun1();

},

doNextThing() {

var fun2 = () => this;

return fun2();

},

doLastThing() {

return this;

}

}

};

console.log(object.test.doSomeThing()); // window

console.log(object.test.doSomeThing.call([1]));//这里的call([1])完全不懂是 //啥意思

console.log(object.test.doNextThing.apply([2] ));

console.log(object.test.doLastThing.apply({}));//


吴周超
浏览 1123回答 1
1回答

web阿周

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

相关分类

JavaScript