• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

国内首家协议开发

软芯音视解码保护平台

在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

哪位老师能帮我解释下下面的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({}));//

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

全部参与1

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

使用道具 举报

发新帖

发布任务需求已有1031167位用户正在使用天盟网服务

发布分类: *
任务预算: *
需求内容: *
手机号码: *
任务商家报价为
  • 预算价 :
  • 成交价 :
  • 完工期 :
  • 质保期 :

* 最终任务项目以服务商报价、双方协商为准!