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

歡迎訪問 生活随笔!

生活随笔

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

javascript

JS中通过call方法实现继承

發(fā)布時間:2023/12/18 javascript 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JS中通过call方法实现继承 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
JS中通過call方法實現(xiàn)繼承 原文:JS中通過call方法實現(xiàn)繼承

? 講解都寫在注釋里面了,有不對的地方請拍磚,謝謝!

?

<html xmlns="http://www.w3.org/1999/xhtml"> <head><title>JS通過call方法實現(xiàn)繼承</title> </head> <body><script type="text/javascript">/* js中的繼承有多種實現(xiàn)方式,今天我們討論下通過call方法實現(xiàn)的繼承。此方法與 原型鏈繼承 相比還是比較簡單,容易理解的。那么,我們先對call方法進行簡單的講解:call 方法可以用一個對象來代替另一個對象調(diào)用一個方法。這句話蠻不好理解,還是看示例代碼吧,更直觀明了:*/function a() {this.name = "我是a";this.showName = function () {alert(this.name);}}function b() {this.name = "我是b";}var _a = new a();var _b = new b();//下面這行代碼的意思是:用 _b 來代替 _a 執(zhí)行 _a 的showName方法。//因此執(zhí)行對象從 _a 變成了 _b, showName方法里面的this此時指代的是 b 了,而不是 a//因此輸出結(jié)果為: 我是b _a.showName.call(_b);/*哎,語文沒學好,總感覺表達不清楚,也不知道大家能不能看懂。好了,進入正題,我們來看繼承的實現(xiàn)。*//*首先我們要定義4個類:動物(animal) ; 人(person) ; 中國人(chinese) ; 日本人(japanese)。代碼如下:*/function animal() {this.eat = function () {alert("動物都要吃東西");}}function person() {this.say = function () {alert("人是會說話的");}}// function chinese() { // this.ch = function () { // alert("我是中國人"); // } // }// function japanese() { // this.ja = function () { // alert("我是日本人"); // } // }/* 然后實現(xiàn)4個類之間的關系關系如下: 中國人 繼承自 人日本人 繼承自 動物 和 人說明: 在JS中是可以實現(xiàn)類的多繼承的。因此 japanese 可以同時繼承自 animal 和 person ,它不像C#和java語言,只支持接口的多繼承,而不支持類的多繼承。修改上面的chinese和japanese如下:*/function chinese() {person.call(this); //繼承自 person 類 (用chinese來代替person)this.ch = function () {alert("我是中國人");}}function japanese() {animal.call(this); //繼承自 animal 類 person.call(this); //繼承自 person 類this.ja = function () {alert("我是日本人");}}/*我們知道:實現(xiàn)繼承后,子類是可以擁有父類的公有字段和方法的。而父類不會擁有子類的任何東西說明:js中的 字段,方法 也是有公有和私有之分的。子類只能訪問到父類的公有字段和方法。 關于 js 中的 公有,私有,全局,靜態(tài) 等等的定義講解我會另寫一篇博文與大家討論。請看如下代碼:*///實例化對象var c = new chinese();var j = new japanese();var p = new person();c.say(); //擁有父類 person 的 say 方法 c.ch(); //自身的 ch 方法 j.eat(); //擁有父類 animal 的 eat 方法 j.say(); //擁有父類 person 的 say 方法 j.ja(); //自身的 ja 方法 p.say(); //自身的 say 方法/*下面兩句會報錯,因為父類person是不會擁有子類的任何東西的,所以p沒有ch和ja方法。p.ch();p.ja();*/</script> </body> </html>

?

     

posted on 2014-11-02 14:47 NET未來之路 閱讀(...) 評論(...) 編輯 收藏

轉(zhuǎn)載于:https://www.cnblogs.com/lonelyxmas/p/4069229.html

總結(jié)

以上是生活随笔為你收集整理的JS中通过call方法实现继承的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。