欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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)