您好,登錄后才能下訂單哦!
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
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。