JS原型鏈

来源:https://www.cnblogs.com/felearn/archive/2018/08/08/JS-yuan-xing-lian.html
-Advertisement-
Play Games

原型鏈 繼承 1 構造函數 2 原型鏈 3 組合繼承 把公共數據放在Parent中,這樣的話就不會公用一個引用類型 4 優化組合繼承 判斷原型和實例的關係 ...


  原型鏈

  1. 每一個實例都有自己的原型,可以__proto__訪問
  2. 構造函數,通過new創建實例
  3. 構造函數通過prototype指向原型對象
  4. 原型對象通過constructor指向構造函數
  5. 如下圖所示:
  6. 訪問對象中的屬性,如果不存在,那麼會在原型中查找,如果還沒有,繼續在原型中查找

    繼承

1 構造函數

function Parent(name) {
    this.name = name
}
function Child(age) {
    Parent.call(this);
    this.age = age
}

  

2 原型鏈

child.prototype = new Parent()
缺點:當存在引用類型的時候,一個實例數據的改變,另一個也會改變,例如 P1.friend = ['Jany', 'LiMINg'],當P1增加一個朋友,另外的實例也會增加。

3 組合繼承

把公共數據放在Parent中,這樣的話就不會公用一個引用類型

1 function Parent(name) {
2     this.name = [‘Jang’,‘Dany’]
3 }
4 function Child(age) {
5     Parent.call(this);
6     this.age = age
7 }
8 child.prototype = new Parent()

 

4 優化組合繼承

function Parent(name) {
    this.name = [‘Jang’,‘Dany’]
}
function Child(age) {
    Parent.call(this);
    this.age = age
}
Child.prototype = Object.create(Parent.prototype)
Child.prototype.constructor = Child

  

判斷原型和實例的關係

1. instance instanceof object,只要是原型鏈中的都可以
2. object.prototyoe.isprototypeoof(instance)
3. object.prototype.tostring.call(instance)

  


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、選中要刪除的學生信息 2、點擊 刪除選中 按鈕,把覆選框中的值取出提交到後臺 3、後臺獲取選中的id 4、前端也跟著刪除數據 示例代碼: 前端代碼: 後臺代碼:(只附上刪除的Servlet代碼) ...
  • 最近在項目開發中,有的地方用到了下拉覆選框,於是再網上找了一下,有很多種寫法,但自己感覺不是很好,又不想用插件,因為感覺引入的js太大,功能太繁雜,於是決定自己寫一個小demo,效果如下: (改善:當遇到選項比較多時,可以定義一個數組插入到HTML中,實現下拉的選項,可以參考省市區聯動的寫法:htt ...
  • 這節課講解 打包多頁面應用過程中的 提取公共代碼 部分。相比於 ,`4.0 optimization.splitChunks 3.0 CommonsChunkPlugin`插件。在使用和配置上,更加方便和清晰。 " 本節課源碼" " 所有課程源碼" 1. 準備工作 按照慣例,我們在 文件夾下創建 和 ...
  • 最近在類似於滴滴軟體的一款小程式,工程確實有點大,很多東西都是第一次做。這次記錄一下關於左滑刪除的一個代碼記錄。主要的思想就是計算滑動距離的大小來使用css中的 transition 控制滑動的效果,主流的都是控制邊距margin來達到左滑的效果。 根據我所拿到的ui,我所運用的是使用寬度和radi ...
  • ES6 為對象字面量添加了幾個實用的功能,雖然這幾個新功能基本上都是語法糖,但確實方便。 一、屬性的簡潔表示法 當定義一個對象時,允許直接寫入一個變數,作為對象的屬性,變數名就是屬性名。 例1: 與例2: 是相同的。 二、方法的簡潔表示法 下麵的例子是方法的簡潔表示法(例3) 和下例是完全等同的(例 ...
  • 規則 BFC觸發原理 作用 如果裡面的兩個div為浮動,那麼設置 .layout {overflow: hidden} 2. 防止margin重疊 總結: BFC通俗地說:就是一個容器,裡外不相互影響,記住:清除浮動的時候,如果使用 overflow: hidden,是存在缺點的,如果超過了範圍,那 ...
  • 1.技術棧 1.小程式; 2.使用了有贊提供的UI庫zan ui 3.express+mongoose+nginx; 2.功能介紹 1.假設有一天你在廣東的一間便利店裡面品嘗一瓶可口可樂,這時,你拿出了這個小程式“商品手賬”掃描這瓶可樂的商品條碼,然後寫下一段留言。 2.時間一晃就到了幾年後,這時你 ...
  • 1、背景:朋友請幫忙做一個比賽排程軟體 2、需求: ① 比賽人數未知,可以通過文本文件讀取參賽人員名稱; ② 對參賽人員隨機分組,一組兩人,兩兩PK,如果是奇數人數,某一個參賽人員成為幸運兒自動晉級; ③ 比賽線下進行,比賽結束後,可以線上選擇每組中晉級人員; ④ 晉級人員進行下一輪比賽分組,依此類 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...