日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JS面向对象(二)——构造函数的继承

發布時間:2023/12/15 javascript 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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面向对象(二)——构造函数的继承的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。