Class(一)
程序员文章站
2022-07-16 22:58:10
...
传统的Javascript语言定义一个类的时候,用的是构造函数和原型对象。例如
function Point(x,y){
this.x = x;
this.y = y;
}
Point.prototype.toString = function(){
return '(' + this.x +',' + this.y + ')' ;
}
这样的定义方式对于刚学习JavaScrip的我们很是都疼,因为像Java,C++,Python这样的面向对象编程的语言使用的都是Class关键字,对于这样需要突然使用原型对象的方法感到很陌生,所以ES6引入了Class关键字。像上面的Point类,我们也可以用Class这样来定义
Class Point{
constructor(x,y){
this.x = x;
this.y = y;
}
toString(){
return '(' + this.x +',' + this.y + ')' ;
}
}
ES6使用Class定义类,它实际上就是对构造函数和原型对象的包装,披上了Class的外衣,所以可以把Class当做语法糖。直接代码,代码胜于雄辩
typeof Point ; //'function'
toString === Point.prototype.toString ; // true
用Class定义的属性,方法,都是定义在类的prototype属性上的,也就是所有的实例都会共享这些属性和方法。用Class关键字定义类,这样就已经和其他的面相对象编程的语言定义类的方式啊,语法啊,已经大同小异。毕竟各种需要都有它自己的特点,语法也就会不一样。
上面Point类中的constructor函数就是Point类的构造函数,这一点呢和其他的面向对象编程语言是一样的,这里就不多讲了。
生成类的实例的方法和传统的js方法一样使用new关键字。
let point = new Point(1,2) ;
//这样就生成了Point类的对象point
point.toString();
//(1,2)
上一篇: ES6五种遍历对象属性的方式