Skip to content

Disallow assigning this to a variable ​

💼 This rule is enabled in the ✅ recommended config.

this should be used directly. If you want a reference to this from a higher scope, consider using arrow function expression or Function#bind().

Fail ​

js
const foo = this;

setTimeout(function () {
	foo.bar();
}, 1000);
js
const foo = this;

class Bar {
	method() {
		foo.baz();
	}
}

new Bar().method();

Pass ​

js
setTimeout(() => {
	this.bar();
}, 1000);
js
setTimeout(function () {
	this.bar();
}.bind(this), 1000);
js
class Bar {
	constructor(fooInstance) {
		this.fooInstance = fooInstance;
	}
	method() {
		this.fooInstance.baz();
	}
}

new Bar(this).method();

Released under the Apache License 2.0.