欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

闭包绑定this

程序员文章站 2024-03-26 09:44:41
...

有的时候需要在回调函数中访问到this 中的内容,而回调函数往往是挂在全局上的匿名函数,这样就访问不到this中的内容。这时,可以使用闭包去绑定this(当然箭头函数也可以实现默认的绑定效果)。

        var obj = {
			name: "zsk",
			sayName: function () {
				console.log(this.name);
			}
		};
		obj.sayName();
		var obj1 = {
			name: "zpx",
			sayTimeoutName: function () {
				setTimeout(function () {
					console.log(this.name);
				}, 20);
			}
		};
		obj1.sayTimeoutName();

运行结果:

闭包绑定this

可以看出是没有打印出来 zpx 的内容的。

为了访问到 this 中 name,我们可以这么做:

var obj1 = {
			name: "zpx",
			sayTimeoutName: function () {
				var sayName = function (that) {
					return function () {
						console.log(that.name);
					}
				}(this);

				setTimeout(sayName, 20);
			}
		};
		obj1.sayTimeoutName();

这样运行结果:

闭包绑定this

这样就可以访问到this name了。

除此之外,箭头函数也可以实现默认所在地方 this 的绑定。

var obj1 = {
			name: "zpx",
			sayTimeoutName: function () {
				setTimeout(() => {
					console.log(this.name);
				}, 20);
			}
		};
		obj1.sayTimeoutName();

运行结果:

闭包绑定this

相关标签: this难点