您好,登錄后才能下訂單哦!
constructor方法是類的構(gòu)造函數(shù)的默認(rèn)方法,通過new命令生成對(duì)象實(shí)例時(shí),自動(dòng)調(diào)用該方法。
constructor方法如果沒有顯式定義,會(huì)隱式生成一個(gè)constructor方法。所以即使你沒有添加構(gòu)造函數(shù),構(gòu)造函數(shù)也是存在的。constructor方法默認(rèn)返回實(shí)例對(duì)象this,但是也可以指定constructor方法返回一個(gè)全新的對(duì)象,讓返回的實(shí)例對(duì)象不是該類的實(shí)例。
constructor中定義的屬性可以稱為實(shí)例屬性(即定義在this對(duì)象上),constructor外聲明的屬性都是定義在原型上的,可以稱為原型屬性(即定義在class上)。
class Person{
constructor(name,age){ //constructor是一個(gè)構(gòu)造方法,用來接收參數(shù)
this.name = name; //this代表的是實(shí)例對(duì)象
this.age=age;
}
say(){ //這是一個(gè)類的方法,注意千萬(wàn)不要加上function
return "我叫" + this.name+"今年"+this.age+"歲了";
}
}
var obj=new Person("天天",18);
console.log(obj.say()); //我叫天天今年18歲了
Person.prototype.say=function(){ //定義與類中相同名字的方法。成功實(shí)現(xiàn)了覆蓋!
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
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。