1. 程式人生 > >ES6 的class類 筆記

ES6 的class類 筆記

理解 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類 筆記