JS原型和繼承
阿新 • • 發佈:2017-05-14
內置 使用 func 一個 blue 取代 計算 function 模式 (){
alert(this.name);
}
Person.prototype.showSex=function(){
alert(this.sex);
}
function Worker(name,sex,job){
Person.call(this,name,sex);
this.job=job;
}
for(var i in Person.prototype){
Worker.prototype[i]=Person.prototype[i];
}
Worker.prototype.showJob=function(){
alert(this.job);
}
var obj =new Worker(‘blue‘,‘女‘,‘計算機‘);
obj.showName();
obj.showSex();
obj.showJob();
1.創建對象的方式
工廠模式:使用簡單的函數構造函數,為對象添加屬性與方法,然後返回對象。這個模式後來被構造函數模式取代
構造函數模式:可以創建自定義引用類型,可以向創建內置對象實例一樣使用new
原型模式:使用構造函數的prototype屬性來指定那些應該共享的屬性和方法。
組合使用狗仔函數模式與原型模式時,使用構造函數來定義實例屬性,使用原型來定義共享的屬性和方法。
2.繼承
原型鏈繼承共享的屬性和方法,借助構造函數繼承實例屬性
function Person(name,sex){
this.name=name;
this.sex=sex;
}
Person.prototype.showName=function
alert(this.name);
}
Person.prototype.showSex=function(){
alert(this.sex);
}
function Worker(name,sex,job){
Person.call(this,name,sex);
this.job=job;
}
for(var i in Person.prototype){
Worker.prototype[i]=Person.prototype[i];
}
Worker.prototype.showJob=function(){
alert(this.job);
}
var obj
obj.showName();
obj.showSex();
obj.showJob();
3.一些基本概念
原型對象:每個構造函數都有一個屬性---原型對象(prototype)。fun.prototype 就是fun的一個實例對象。就在fun創建的時候,就創建了一個它的實例對象並賦值給它的prototype。
原型對象的作用:主要用來繼承
原型鏈:JS在創建對象的時候,無論是普通對象還是函數對象,都有一個叫_proto_的內置屬性,用於指向創建它的函數對象的原型對象prototype 實例與原型的鏈條
總結:每個構造函數都有一個原型對象。原型對象都包含一個指向構造函數的指針,而實例都包含了一個指向原型對象的內部指針。
JS原型和繼承