class语法
JS语言的传递方法是通过构造函数,定义并生成新对象,是一种基于原型的面向对象系统。这种写法跟传统的面向对象语言差异很大,很容易让新学习这门语言的人感到困惑。所以,在ES6中新增了类的概念,可以使用class关键字声明了一个类,之后以这个类来实例化对象。
基于原型的面向对象系统:
1 | const Miaov=function(a,b){ |
1 | class Miaov{ |
说明:1、Miaov中的constructor方法是构造方法,this关键字则代表实例对象。也就是说,ES5的构造函数Miaov,对应ES6的Miaov这个类的构造方法。
2、Miaov这个类除了构造方法,还定义了一个print方法。注意,定义“类”的方法的时候,前面不需要加上function这个关键字,直接把函数定义放进去了就可以了。另外,方法之间不需要逗号分隔,加了会报错。
3、构造函数的prototype属性,在ES6的类上面继续存在,而且类的所有方法都定义在类的prototype属性上面。
console.log(Miaov.prototype);//object{constructor:function,print:function}
4、定义在类中的方法都是不可以枚举的。
console.log(object.keys(Miaov.prototype));//不能打印出来
5、constructor方法是类的默认方法,通过new命令生成对象实例时,自动调用该方法。一个类必须有constructor方法,如果没有显式定义,一个空的constructor方法会被默认添加。