Appearance
类的prototype属性
本节目标:理解“类的prototype属性”的核心思路,并能把它用于实际开发或面试表达。
类也有prototype属性,指向原型对象。事实上,类的所有方法都定义在类的prototype属性上面。class Point {
constructor() {
// ...
}
toString() {
// ...
}
toValue() {
// ...
}
}
// 等同于
Point.prototype = {
constructor() {},
toString() {},
toValue() {},
};
在类的实例上面调用方法,其实就是调用原型上的方法。
class B {}let b = new B();
b.constructor === B.prototype.constructor // true
上面代码中,b是B类的实例,它的constructor方法就是B类原型的constructor方法。**可操作类的原型对象**
由于类的方法都定义在prototype对象上面,所以类的新方法可以添加在prototype对象上面。
Object.assign方法可以很方便地一次向类添加多个方法。
class Point { constructor(){ // ... }}
Object.assign(Point.prototype, { toString(){}, toValue(){}});