javascript 之 繼承

来源:https://www.cnblogs.com/jiaobaba/archive/2019/03/15/10519386.html
-Advertisement-
Play Games

1.傳統方式 >原型鏈 (過多繼承了沒用的屬性) Grand.prototype.lastname = 'zhang' function Grand(); } var grand = new Grand(); Father.prototype = grand; function Father(){ ...


  1.傳統方式--->原型鏈  (過多繼承了沒用的屬性)

Grand.prototype.lastname = 'zhang'   function Grand(); } var grand = new Grand();
Father.prototype = grand; function Father(){   this.name = 'hehe'; } var father = new Father();   Son.prototype = Father(); function Son(){
} var son = new Son();              //son 即繼承了father的,有繼承了grand的 ,這就發生了矛盾,無論你需不需要繼承這個屬性,他都會繼承來。

2.借用構造函數(1.不能繼承借用的構造函數的原型,2.每次構造函數都要多走一個函數,只是視覺上節省了代碼量)

function Person(name, age, sex){   this.name = name;   this.age = age;   this.sex = sex; } function Student(name, age,sex,grade){       //借別人的方法去實現自己的東西,實際上沒有繼承的關係,只是用你的東西乾我自己的事情。   Person.call(this,name,age,sex);   this.grade = grade; } var studet = new Student();   共有原型 Father.prototype.lastName = 'zhang'; function Father(){
} // var father = new Father();     //用原型繼承的時候,需要實例化兩個對象,但使用共有原型,就可以不用實例原型對象,直接使用構造函數的原型就可以 Son.prototype = Father.prototype; function Son(){
} var son = new Son();     可以用一個函數封裝

但這中也是有缺點的,就是你在給原型添加屬性時,因為父親和孩子都指向一個引用,改一個,另一個也會跟著變。這並不是我們想要到的,我們希望的是,我繼承你,但我自己後定義的原型不想影響你。有自定義的,有共有的。這就引出了聖杯模式

 聖杯模式 

通過添加一個中間層,new Middle()出一個新對象,讓這個新對象的原型指向Father的原型,讓Son的原型等於new Middle()這個新對象,因為這個新對象是一個全新的對象,所以Son的原型等於新對象並不會影響Father的原型。樣Son既可以通過原型鏈找到Father的原型,

 

 利用閉包私有變數寫法

 


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

-Advertisement-
Play Games
更多相關文章
  • 看了一天的angular.js,只要記住這是關於雙向數據綁定 和單向數據綁定就可以,看看開發文檔,短時間內還是可以直接入手的,看個人理解能力(我是小白)。 這幾天開始著手學習angularjs的有關知識,將一些心得總結如下: (一)為了使用Angular,所有應用必須首先做兩件事情: 1.載入ang ...
  • # jQuery $.on()方法和addEventListener改變this指向 ...
  • 1.語義標簽解決方案 <video></video> 屬性: controls 顯示控制欄 autoplay 自動播放 loop 設置迴圈播放 多媒體標簽在網頁中的相容效果方式 <video> <source src="1.mp4"></source> <source src="1.ogg"></s ...
  • 在簡介、引言中常見:文字只有一排,超出寬度以省略號顯示,像這樣 實現方法:在公共庫定義otw類 其中 text-overflow:ellipsis 顯示省略符號來代表被修剪的文本; white-space:nowrap 文本不會換行,文本會在在同一行上繼續,直到遇到 <br> 標簽為止。 ...
  • 今天我們繼續瞭解我們攻城獅(Ps.工程師)蓋房子(Ps.寫網頁)的時候所需要的建材(Ps.標簽),今天我們先來瞭解一下標簽的種類。 我們在寫網頁的工程中,需要用到各種各樣的標簽,這些標簽也有自己不同的特性,從微觀上講它們不同的特性可以適應不同的頁面情況;從巨集觀上講,它們分為塊級元素回合行內元素。 今 ...
  • 電商項目(上) css3新增選擇器: 選取屬於其父元素的首個子元素的指定選擇器 選取屬於其父元素的最後一個子元素的指定選擇器 匹配屬於其父元素的第n個子元素 選擇器匹配屬於其元素的第n個子元素的每個元素 定義文檔的頁面 定義導航鏈接的部分 定義文檔或節的頁腳 定義文檔中的節 定義其所處內容之外的內容 ...
  • 今天我們將介紹mode屬性的development值。它會自動為你配置Webpack以簡化開發過程。除此之外,我們還會介紹webpack-dev-server——包括模塊熱替換。開始吧! ...
  • 這個主要是自己遇到很多次了,每次都去網上查改哪裡,這次記到自己這裡吧,以後把遇到的vue工具的一些問題都整理到這裡 在vue中開發的項目有時候需要到手機上看效果,但是你配好本地埠之後,會出現訪問內容 Invalid Host header 這時候需要在 webpack-dev.config.js中 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...