ES6 的class類 筆記
阿新 • • 發佈:2018-05-23
理解 span line object 修改 rom 所有 import eight
class Person{
// 構造
constructor(x,y){
this.x = x;
this.y = y;
}
toString(){
return (this.x + "的年齡是" +this.y+"歲");
}
}
export {Person};
//index.js
import {Person} from ‘./Person‘;
let person = new Person(‘張三‘,12);
console.log(person.toString()); </span>
1、class初始化定義:
Person 是一個類 ,定義了屬性(x,y)與方法 toString()
console.log(typeof Person);//function
console.log(Person === Person.prototype.constructor);//true
so: 類的數據類型就是函數,類本身就指向構造函數, 可以理解為:類就是構造函數 , 因為es5的中 【構造函數 === 構造函數.prototype.constructor】
2、class類的修改與增加屬性方法:
構造函數的prototype屬性,在ES6的“類”上面繼續存在。事實上,類的所有方法都定義在類的prototype屬性上面,通過以下方式可是覆蓋類中的方法,當然定義類的時候也可以通過這個方式添加方法。
Object.assign(Person.prototype,{ getWidth(){ console.log(‘12‘); }, getHeight(){ console.log(‘24‘); } }); Person.prototype.sex = ‘man‘ ; console.log(p.sex); // man Person.prototype.sex = ‘woman‘ ; console.log(p.sex); //woman
//class擁有保護機制,可以增加,或覆蓋原來有屬性,但是如下就不行
Person.prototype == {}
console.log(p.sex); //‘woman‘;
//sex屬性還在,prototype從新賦空值這樣是不生效的
PS建議:class類已經定義完畢不可修改,不可直接修改Person.prototype,個別場景需要,應新建一個繼承class上,然後再修改,拓展,新class繼承老的class
ES6 的class類 筆記