JavaScript绑定-箭头函数和绑定
我有一段代码:JavaScript绑定-箭头函数和绑定,javascript,binding,Javascript,Binding,我有一段代码: const data = { x: "Target" } let bar = () => { console.log(this.x) } let final = bar.bind(data); final(); 此代码返回未定义的。下面是相同的代码,但带有非箭头函数: const data = { x: "Target" } let bar = function(){ console.log(this.x) } let final = bar.b
const data = {
x: "Target"
}
let bar = () => {
console.log(this.x)
}
let final = bar.bind(data);
final();
此代码返回未定义的。下面是相同的代码,但带有非箭头函数:
const data = {
x: "Target"
}
let bar = function(){
console.log(this.x)
}
let final = bar.bind(data);
final();
这个代码有效。我想了解为什么arrow函数阻止绑定工作。我知道他们处理这件事的方式不同。我知道它们保留了调用它们的原始上下文,在本例中不包括x。但是它也会阻止bind()工作吗
但是它也会阻止bind()工作吗
部分原因是,由于bind
返回一个新函数,该函数使用特定的this
调用原始函数-但箭头函数不使用调用它们的this
,它们完全忽略它。相反,它们关闭了定义它们的这个
箭头函数上的bind
无法更改箭头的此
概念。它所能做的只是它的第二个特性,即预先提供参数:
“严格使用”;
函数运行(){
常数f=(a,b,c)=>{
console.log(“this”,this);
控制台日志(“a”,a);
控制台日志(“b”,b);
控制台日志(“c”,c);
};
常数fbound=f.bind({},1,2,3);
f();
fBond();
}
run()代码>
。作为控制台包装器{
最大高度:100%!重要;£
}
箭头函数优先于绑定。每当有两种或两种以上不同的方式设置此上下文时,都会按以下顺序解决:
-箭头函数
-新关键字
-束缚
-打电话或申请