一、注意点
注意点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");

版权声明:本文为qq_21980517原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。