js this丢失问题分析 及 解决方案

this丢失案例

var obj = {
	name: "Mike",
	sayHi: function(){
		console.log(this.name + " say Hi !");
	}
}
setTimeout(obj.sayHi, 1000);// undefined say Hi

由于函数里的this 永远指向其调用者 1s 后 调用 sayHi 是 window 但window并没有那么属性 所以 为 undefined

解决方案

嵌套一层函数

  • setTimeout(function(){obj.sayHi()}, 1000);// undefined say Hi

使用bind修改this指向

  • setTimeout(obj.sayHi.bind(obj), 1000);// undefined say Hi

猜你喜欢

转载自blog.csdn.net/weixin_42043407/article/details/121194132