1、定义:this是包含它的函数作为方法被调用时所属的对象,简言之,每个方法中的this指向调用它的实例对象,谁调用了它,它就指向谁。
2、类中this的使用问题:在类中的构造函数constructor()中的this指向的是实例对象。
3、若在某个方法中this指向的不再是constructor中的this,但却要使用constructor中的this,此时可以在类外声明一个全局变量,然后在constructor()中将this保存给全局变量,就可以在任何地方使用这个全局变量,也就是使用constructor()中的this一样。
<button>点击</button>
<script>
//ES6中类和对象
//类中的this指向问题
var that;//全局变量,储存的是constructor里面的this
var _that;//全局变量
class Star {
constructor(uname,age){
//constructor里面的this指向的是创建的实例对象
that = this;
console.log(this);
this.uname = uname;
this.age = age;
this.btn = document.querySelector('button');
this.btn.onclick = this.sing;
}
sing() {
//这个sing方法中的this指向的是btn这个按钮,因为这个按钮调用了这个函数
//在btn中是没有属性的,所以输出的是undefined
console.log(this);
console.log(that.uname);
}
dance() {
//这个dance里面的this指向的是实例对象ldh,因为ldh调用了这个函数
_that =this;
console.log(this);
}
}
var ldh = new Star ('刘德华');
console.log(that === ldh);
ldh.dance();
console.log(_that === ldh);
</script>