麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 語言 > JavaScript > 正文

JavaScript中數組繼承的簡單示例

2024-05-06 16:23:59
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了JavaScript中數組繼承的簡單示例,數組繼承是JavaScript入門學習中的基礎知識,需要的朋友可以參考下

在寫一些庫時經常會用到樹結構的數據,而且一些樹形結構的數據對從根到葉的路徑獲取需求非常高。比如一個站點的整個路由表就是一棵這樣的樹,它的「路徑」實際上就是 URL 中的 path 部分。所以我好幾次都用了喪心病狂的數組繼承去實現,下面給大家分享下。

在 JavaScript 中,數組也屬于 Object 的一種,它也可以繼承。任何兩個對象本身就可以有繼承關系,數組也不例外。于是我們讓一個樹的任何一個節點都是數組,它只維護自己下標最大的那個元素的值。其它元素的值通過原型繼承從祖先節點繼承而來。這樣我們就可以像操作一般數組一樣在葉節點上訪問從根節點過來的路徑了。下面是一個簡易實現:

運行

 

 
  1. <script> 
  2. // 定義節點類 
  3. var TNode = function(value) { 
  4. this.push(value); 
  5. }; 
  6. TNode.prototype = []; 
  7. TNode.prototype.constructor = TNode; 
  8. TNode.prototype.createChild = function(value) { 
  9. var node = Object.create(this); 
  10. TNode.call(node, value); 
  11. return node; 
  12. }; 
  13.  
  14. // 使用節點造出一棵簡單的樹 
  15. var root = new TNode('root'); 
  16. var a = root.createChild('a'); 
  17. var b = a.createChild('b'); 
  18.  
  19. // 將葉節點視為數組,直接得到路徑 
  20. document.write(b.join('/')); <!-- root/a/b 
  21. </script> 

這個用法算是比較黑的魔法,如果不懂原型繼承的原理可能很難看懂。所以如果只是作為一個庫的實現也許可以這么寫(我已經用過好多次了,事實證明并沒有坑),但直接在業務代碼中如果這么用就可能被吐槽到死。雖然這個用法并沒有違背 JavaScript 這種語言的核心思想。

這個用法的一個特點就是祖先節點的值更新時會自動同步到所有子節點上。雖然原型鏈訪問也存在性能開銷,但比起在代碼層自己去遍歷樹已經是快得不能再多了。當然如果沒有這樣的需求,只是想實現一棵簡簡單單的數還是使用傳統方式比較好。畢竟這太依賴語言了,以后如果要遷移到別的編程語言可能會比較困難。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 久久久久久久高清 | 久久国产亚洲视频 | av在线免费播放网站 | 中文字幕电影免费播放 | 久久毛片免费 | 久久亚洲激情 | 久久久成人免费视频 | 国产91片 | 免费色片 | 免费福利在线视频 | 久久久久久久久久久久久久久伊免 | 久久精品av| 日本xxxx色视频在线观看免费, | 得得啪在线视频 | 久久亚洲精品久久国产一区二区 | 欧洲成人精品 | 黄色av片三级三级三级免费看 | 久久无| 久久久久久三区 | 黄色网址在线播放 | 亚洲第一色婷婷 | 久久久成人免费视频 | 在线免费观看麻豆 | 黄视频网址 | 99热草| 逼特逼视频在线观看 | 国产一区视频观看 | 99re色 | 免费a级毛片永久免费 | 亚洲成人福利在线观看 | 国产午夜三级一区二区三桃花影视 | 久久国产成人精品国产成人亚洲 | 久久久久久久久成人 | 国产精品剧情一区二区在线观看 | 精品三区视频 | 91久久久久久久久久久久久久 | 国产一级桃视频播放 | 12av毛片| 羞羞电影在线观看www | 国产精品久久久久久久久久久天堂 | 国产成人自拍小视频 |