當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
JS面向对象(二)——构造函数的继承
生活随笔
收集整理的這篇文章主要介紹了
JS面向对象(二)——构造函数的继承
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
構造函數的封裝請移步 http://www.cnblogs.com/JDDDD/p/5392231.html
對象之間繼承一共有五種方法
比如現在有一個Person的構造函數,有兩個屬性name和sex,有兩個方法showName()和showSex()
1 function Person(name , sex) { 2 this.name = name; 3 this.sex = sex; 4 } 5 Person.prototype.showName = function () { 6 alert(this.name); 7 }; 8 Person.prototype.showSex = function () { 9 alert(this.sex); 10 };現在又有一個Worker的構造函數,有一個屬性
1 function Worker(name , sex , job) { 2 3 //this--->new出來的worker對象 4 this.job = job; 5 }現在需要讓Worker去繼承Person
方法一 構造函數綁定
使用call或者apply方法(可以將一個對象替換成當前對象,這邊即將Person對象替換成當前的Worker對象),將父對象的構造函數綁定在子對象上
1 //------>工人的繼承 2 function Worker(name , sex , job) { 3 // Person.apply(this ,[name,sex]); 4 Person.call(this,name,sex); 5 this.job = job; 6 } 7 8 var oW = new Worker('jiang','male','boss'); 9 alert(oW.name); 10 oW.showName();這時我們會發現第一個alert是可以輸出的,而第二個oW.showName()卻無法調用 , 控制臺會提示oW.showName() is not a function 這是因為我們沒有復制父級的原型 改進如下
1 //------>工人的繼承 2 function Worker(name , sex , job) { 3 Person.apply(this ,[name,sex]); 4 this.job = job; 5 } 6 7 for(var i in Person.prototype){ 8 Worker.prototype[i] = Person.prototype[i]; 9 } 10 11 var oW = new Worker('jiang','male','boss'); 12 alert(oW.name); 13 oW.showName();這時oW.showName()就可以輸出內容 jiang,當然這邊不能直接使用Worker.prototype = Person.prototype 因為這樣的話子對象的prototype的改變將會影響到父級的prototype, 這個關系到引用的問題 , 這里不作展開 ,具體請看。
?
轉載于:https://www.cnblogs.com/JDDDD/p/5395222.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的JS面向对象(二)——构造函数的继承的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ajax的data传参的两种方式
- 下一篇: 知乎实名认证在哪里