1、初步认识Class
ES6中的class可以看作只是一个语法糖,它的绝大部分功能,ES5都可以做到,新的class写法只是让对象原型的写法更加清晰,更像面向对象编程的语法而已。
案例一:
function Point(x,y){
this.x = x;
this.y = y;
}
Point.prototype.toString = function(){
return '('+this.x+','+this.y+')';
}
var p =new Point(1,2);
console.log(p.toString());
运行结果:
改成成class:
class Point{
constructor(x,y){
this.x = x;
this.y = y;
}
toString(){
return '('+this.x+','+this.y+')';
}
}
var p =new Point(1,2);
console.log(p.toString());
运行结果:
上面代码定义了一个类,可以看到里面有一个constructor方法,这就是构造方法。而this关键字则代表实例对象。
定义“类”的方法时,前面不需要加上function这个保留字,直接把函数定义放进去就可以了。另外,方法之间不需要逗号分割,加了会报错。(类型C++的内嵌函数)
2、严格模式
类和模块的内部默认使用严格模式,所以不需要使用use strict指定运行模式。只要将代码写在类或模块之中,那么就只有严格模式可用。ES实际上已经把整个语言都升级到了严格模式下。
类必须使用new来调用,否则会报错。这是它跟普通的构造函数的一个主要区别,后者不用new也可以执行。
Point();//报错,类必须使用new Point()调用
3、this的指向
类的方法内部如果含有this,它将默认指向类的实例。
但是,必须非常小心,一旦单独使用该方法,很可能报错。所以不要单独进行使用。
规范使用:类实例.方法名