es6 class使用文檔

//定義了一個名字爲Person的類

constructor方法是類的構造函數的默認方法,通過new命令生成對象實例時,自動調用該方法。
constructor方法如果沒有顯式定義,會隱式生成一個constructor方法。所以即使你沒有添加構造函數,構造函數也是存在的。constructor方法默認返回實例對象this,但是也可以指定constructor方法返回一個全新的對象,讓返回的實例對象不是該類的實例。
constructor中定義的屬性可以稱爲實例屬性(即定義在this對象上),constructor外聲明的屬性都是定義在原型上的,可以稱爲原型屬性(即定義在class上)。

class Person{   
            constructor(name,age){      //constructor是一個構造方法,用來接收參數
                       this.name = name;        //this代表的是實例對象
                      this.age=age;
            }
        say(){      //這是一個類的方法,注意千萬不要加上function
            return "我叫" + this.name+"今年"+this.age+"歲了";
    }
}
var obj=new Person("天天",18);
console.log(obj.say());         //我叫天天今年18歲了

修改類方法

Person.prototype.say=function(){        //定義與類中相同名字的方法。成功實現了覆蓋!
    return "我是來證明的,你叫" + this.name+"今年"+this.age+"歲了";
}
var obj=new Person("天天",38);
console.log(obj.say());         //我是來證明的,你叫天天今年38歲了

新增類方法

Person.prototype.addFn=function(){
    return "我是通過prototype新增加的方法,名字叫addFn";
}
var obj=new Person("天天",48);
console.log(obj.addFn());       //我是通過prototype新增加的方法,名字叫addFn

動態新增多個類方法

Object.assign(Person.prototype,{
    getName:function(){
         return this.name;
    },
    getAge:function(){
         return this.age;
    }
})
var obj=new Person("天天",58);
console.log(obj.getName());    //laotie
console.log(obj.getAge());     //88
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章