建设肯德基网站的好处,免费微信网站源码,网站名字备案流程,今天东莞封路es6 Class基本语法 class的基本语法#xff1a; ES6 的class只是一个语法糖#xff0c;它的绝大部分功能#xff0c;ES5 都可以做到#xff0c;新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已
传统用构造函数生成实例
function Point(x, y) {th… es6 Class基本语法 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);es6 class写法 constructor()方法是类的默认方法通过new命令生成对象实例时自动调用该方法
class Point {constructor(x, y) {this.x x;this.y y;}toString() {return ( this.x , this.y );}
}Class的继承 通过extends关键字实现继承ES6 规定子类必须在constructor()方法中调用super()否则就会报错。这是因为子类自己的this对象必须先通过父类的构造函数完成塑造得到与父类同样的实例属性和方法然后再对其进行加工添加子类自己的实例属性和方法。如果不调用super()方法子类就得不到自己的this对象 为什么子类的构造函数一定要调用super()原因就在于 ES6 的继承机制与 ES5 完全不同。ES5 的继承机制是先创造一个独立的子类的实例对象然后再将父类的方法添加到这个对象上面即“实例在前继承在后”。ES6 的继承机制则是先将父类的属性和方法加到一个空的对象上面然后再将该对象作为子类的实例即“继承在前实例在后”。这就是为什么 ES6 的继承必须先调用super()方法因为这一步会生成一个继承父类的this对象没有这一步就无法继承父类。
class Point { constructor(x, y) {this.x x;this.y y;}toString() {return ( this.x , this.y );}}class ColorPoint extends Point {constructor(x, y, color) {super(x, y); // 调用父类的constructor(x, y)this.color color;}toString() {return this.color super.toString(); // 调用父类的toString()}
}es5原型链实现继承
function SuperType() {this.property true
}
SuperType.prototype.getSuperValue function() {return this.property
}
function SubType() {this.subproperty false
}
// 继承了SuperType
SubType.prototype new SuperType()
SubType.prototype.getSubValue function() {return this.subproperty
}const instance new SubType()
alert(instance.getSuperValue()) // true构造函数、原型和实例的关系