JavaScript调用方法混乱

问题描述 投票:0回答:2

为什么这样做:

this.example = element => {
  console.log(element, element, element);
};

this.example.call({}, 'yo');
//prints yo yo yo

与此相对:

this.example = element => {
  console.log(element, element, element);
};

this.example.call('yo');
/// prints undefined

我似乎不明白为什么第二个示例打印时未定义。为什么需要使用参数(在这种情况下为空对象),以便调用以打印出所需的解决方案?

编辑:

对于那些评论:在ES6语法中似乎'this'被忽略了>>


example = element => {
  console.log(element, element, element); // yo yo yo
  console.log(this); // {}
};

function example(element) {
  console.log(element, element, element); // yo yo yo
  console.log(this); // {newObjKey: 'value'}
}

example.call({ newObjKey: 'value' }, 'yo');

为什么这样做:this.example = element => {console.log(element,element,element); }; this.example.call({},'yo'); // print yo yo yo与此相对的是:this.example = element => {...

javascript
2个回答
2
投票

call方法的第一个参数是函数绑定到的this引用。但是由于它是一个箭头函数,所以the first parameter of call is ignored(但是仍然会求值!)。跟随call引用的call函数的所有其他参数作为函数参数传递。


0
投票

Call,Apply和Bind方法帮助我们更改函数内部的this

© www.soinside.com 2019 - 2024. All rights reserved.