this在JavaScript中有着广泛的应用,无论是普通函数、还是构造函数,都可以看到this的影子。初学者非常容易误解了this的含义,现在博主使用一些简洁的例子,来将this的用法展现出来。
1. 一般函数中this表示全局对象
function demo() {
console.log(this.x);
}
var x = 1;
demo(); //输出1
2. 作为方法调用,this表示上一级对象
function demo() {
console.log(this.x)
}
var obj = {
x: 1,
demo: demo,
};
obj.demo(); //输出1
3. 作为构造函数调用,this表示对象实例
function demo() {
this.x = 1;
}
var x = 2;
var obj = new demo();
console.log(obj.x); //输出1
4. 表示被绑定的内容
function demo() {
console.log(this.x);
}
var obj = {
x: 2,
};
var x = 1;
demo.call(obj); //输出2
在ES6中,使用 =>
箭头可以表示代替使用 var self = this
或者 bind(this)
的做法。在一定程度上面降低了this的理解难度,期待更多新的语法可以彻底解决这些问题。