ES6 --- 使用类的注意点和this指向问题

一、注意点
注意点1:ES6中,类没有变量提升,必须先定义类,再实例化对象

错误写法:报错Uncaught ReferenceError: Cannot access 'Star' before initialization

var starObj = new Star();
class Star{
	constructor(name){
		this.name = name;
	}

	jump(){
		console.log("跳跃");
	}
}

正确写法:

class Star{
	constructor(name){
		this.name = name;
	}

	jump(){
		console.log("跳跃");
	}
}

var starObj = new Star();

注意点2:类里面的属性和普通函数一定要加this再使用;

class Star{
	constructor(name){
		// 接收的参数要加this
		this.name = name;

		// 执行普通函数需要this
		this.jump();   //刷新页面后,会直接输出 "跳跃"
	}

	jump(){
		console.log("跳跃");
	}
}

var starObj = new Star();

二、this指向问题
1、constructor中的this指向的是创建的实例对象

class Star{
	constructor(name){
		// constructor中的this指向的是创建的实例对象
		console.log(this)
	}
}

var starObj = new Star("Liu");

在这里插入图片描述

2、constructor中普通函数的this指向依然是创建的实例对象

class Star{
	constructor(name){
		// 接收的参数要加this
		this.name = name;

		// 执行普通函数需要this
		this.jump();   //刷新页面后,会直接输出 "跳跃"
	}

	jump(){
		// 构造函数中的普通函数的this,指向的依然是创建的实例对象
		// 谁调用这个方法,this就指向谁
		console.log(this);
	}
}

var starObj = new Star("Liu");

在这里插入图片描述

你可能感兴趣的:(ES6)