在不同的编程语言中,设计人员采用不同的方式来描述对象,最为常见的就是基于类面向对象语言,例如Java。
另外就是基于原型的方式来描述。
由于javaScript早期设计被要求模仿java,所以使用到this、new这类关键字。后面社区开始使用各种方式书写js面向对象,使之更为接近我们习惯的,基于类的面向对象形式。
何为原型?
- 所有对象有私有字段[[prototype]],就是对象的原型
- 读取一个对象的属性,如果对象本身没有,就是到对象的原型上找,知道原型为空,或者找到这个属性为止。
ES6中访问和操作原型的方式:
a. Object.create
b. Object.getPrototypof
c. Object.setPrototypeof
new操作发生了什么事情?
- 以构造器的prototype属性为原型,创建对象;
- 将this和调用参数传给构造器,执行;
- 如果构造器放回的是对象则放回,否则放回第一步创建的对象。
ES6中类的基本写法,使用class关键字定义类,使用extend关键字实现继承。
class Ractangle{
constructor(height, width){
this.height = height;
this.width = width;
}
get area() {
return this.calcArea();
}
calcArea() {
return this.height * this.width;
}
}
网友评论