<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • JavaScript中繼承的深入理解

    時間:2024-07-21 23:20:52 JavaScript 我要投稿
    • 相關推薦

    關于JavaScript中繼承的深入理解

      JavaScript中我們可以借助原型實現繼承。

      例如

      function baz(){this.oo="";}function foo(){}foo.prototype=new baz();var myFoo=new foo();myFoo.oo;

      這樣我們就可以訪問到baz里的屬性oo啦。在實際使用中這個樣不行滴,由于原型的共享特點(數據保存在了堆上),

      所有實例都使用一個原型,一但baz的屬性有引用類型就悲劇了,一個實例修改了其他實例也都跟著變了...wuwuwu

      自然就有了組合式繼承

      function baz(){this.oo="";}baz.prototype.xx=function(){}function foo(){baz.call(this);//第二次調用}foo.prototype=new baz();//第一次調用var myFoo=new foo();myFoo.oo;myFoo.xx;

      這樣就會有一個問題,代碼里也表明出來了,baz會被調用兩次,身為處女座的怎么可以允許呢..

      插一句,第二種方式就不用出現第一種方式的問題嗎?答案是不會的。

      原因是屬性的查找是先從對象自身開始,沒找到才會去原型中去找,call時就把屬性給繼承了。

      再插一句,那這樣只使用call繼承不就行了嗎?如果不使用原型這個是可行的,但是作為處女座怎么能不使用原型呢,

      在原型上方法是共享的,這樣性能就好了很多呀。

      寄生組合式繼承

      __extends=function (p,c){function ctor(){this.constructor=c;//賦值構造函數}ctor.prototype=p.prototype;c.prototype=new ctor();}function baz(){this.oo=[1];}baz.prototype.xx=function(){}__extends(baz,foo);function foo(){baz.call(this);}var myFoo=new foo();myFoo.oo;myFoo.xx;

      這樣不但解決了兩次調用的問題,還解決了對象調用構造函數時調用的是真實的創建對象的函數而不是原型鏈上其他的構造函數。

      代碼里有表明。

      構造函數是原型對象上的一個屬性,是對象的創建者。由于我們的原型屬性被從新賦值了所以構造函數時繼承來的。

      這里要說一下,對象是怎樣創建,也就是new都干了些什么。

      例如:

      var a=new b();

      其實是這樣的,a={};創建了一個給a,然后b.call(a);call里初始化a,在call之前還有一步,就是a的內部原型對象

      設置為b的原型屬性指向的原型對象。原型上有構造函數屬性,構造函數用來創建對象分配內存控件。

      大概就這些...看看時間也不早了,碎吧,保持平和的心態切勿浮躁,努力去改變明天,希望一切都會慢慢變好。

    【JavaScript中繼承的深入理解】相關文章:

    有關深入理解JavaScript中的并行處理的介紹10-14

    對javascript的理解08-08

    javascript面向對象中的對象怎么理解09-02

    淺談javascript中的單線程理解08-16

    淺談如何深入學習Javascript中的this關鍵字08-19

    理解JavaScript原型鏈教程09-02

    javascript的閉包概念怎么理解06-15

    JavaScript中的with關鍵字07-24

    在Java中執行JavaScript代碼07-14

    Javascript中typeof 用法歸納09-27

    主站蜘蛛池模板: 国产精品日韩欧美在线第3页 | 3级黄性日本午夜精品| 久久er热视频在这里精品| 久99久无码精品视频免费播放| 久久99国产精品久久99果冻传媒| 久久精品国产亚洲精品| 久久亚洲精品中文字幕三区| 无码人妻精品一区二区在线视频| 99久久精品国产综合一区| 国产成人精品高清在线观看93| 精品亚洲成a人片在线观看少妇 | 国产精品 码ls字幕影视| 久久综合精品国产二区无码| 免费视频精品一区二区| 国产成人精品午夜福麻豆| 日韩麻豆国产精品欧美| 精品国产_亚洲人成在线高清| 亚洲欧美一级久久精品 | 欧美极品欧美精品欧美视频| 亚洲国产精品嫩草影院| 99精品国产在热久久无毒不卡| 亚洲线精品一区二区三区影音先锋| 精品国产国产综合精品| 9999国产精品欧美久久久久久| 国产精品久久久久久影院 | 久久精品亚洲一区二区三区浴池| 四虎精品免费永久免费视频| 精品国产亚洲男女在线线电影| 国产精品v欧美精品v日韩| 99久久免费国产精品| 91po国产在线精品免费观看| 久久国产乱子精品免费女| 国产精品99久久精品| 91精品国产9l久久久久| 国产精品国产三级国产AV主播| 国产精品亚洲A∨天堂不卡| 国产亚洲精品a在线无码| 久久久精品国产sm调教网站| 久久66热人妻偷产精品9| 日本一卡精品视频免费| 亚洲av永久无码精品网站 |