Js的this隐式调用的坑,遗失this绑定几个简单举例

原创
小哥 3年前 (2022-11-16) 阅读数 36 #大杂烩

博主分享的这些例子来自JS小黄书, 帮助大家理解JS约束原则

前两个是隐式绑定的示例

function foo(){
  console.log(this.a);
}
var obj = {
  a:2,
  foo: foo
};
obj.foo(); // 2

function foo(){
  console.log(this.a);
}
var obj2 = {
  a:42,
  foo: foo
}
var obj1 = {
  a: 2,
  obj2: obj2
};
obj1.obj2.foo(); // 42

隐式丢失

function foo(){
  console.log(this.a);
}
var obj = {
  a:2,
  foo: foo
}
var bar = obj.foo; // 函数别名!
var a = "gloabal";
bar(); // "global"

function foo(){
  console.log(this.a);
}
function doFoo(fn){
  fn();
}
var obj = {
  a:2,
  foo: foo
};
var a = "global";
doFoo(obj.foo); // "global"

缺少回调函数。this绑定非常常见

除了隐式绑定之外,还有显式绑定和硬绑定。

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门