javascript對象(3)

来源:http://www.cnblogs.com/user-5253/archive/2017/06/23/7071835.html
-Advertisement-
Play Games

這個對象,不是那個對象,第三哦! 對象之間會存在繼承,所以,來說一下他們之間存在的三種三種繼承方式: 1、冒用繼承 這就是第一種繼承方式。 【註意】冒用繼承缺點:不能使用原型上的方法和屬性 優點:可以傳遞參數; 2、原型繼承 這種繼承方式就是將新建的父類對象賦給子類構造函數的原型。 【註意】原型鏈繼 ...


這個對象,不是那個對象,第三哦!

對象之間會存在繼承,所以,來說一下他們之間存在的三種三種繼承方式:

  1、冒用繼承    

 1         //創建了孫悟空構造函數
 2             function Sun(change,weapon,gf){
 3                 this.change = change;
 4                 this.weapon = weapon;
 5                 this.gf = gf;
 6                 this.bianshen = function(){
 7                     alert("吃俺老孫一棒");
 8                 }
 9             }
10             
11             //給原型上添加一個方法
12             /*Sun.prototype.bianshen = function(){
13                 alert("吃俺老孫一棒");
14             }*/
15             
16             //創建豬八戒構造函數
17             function Zhubajie(name){//name是豬八戒自己單獨有的屬性
18                 this.name = name;
19                 //創建一個屬性,屬性值是Sun構造函數
20                 this.sun = Sun;
21                 this.sun("仙桃","金箍棒","紫霞仙子");
22                 delete this.sun;//刪除掉這個屬性
23             }
24             
25             var zbj = new Zhubajie("豬八戒");
26             
27             
28             zbj.bianshen();//方法可以使用
29             alert(zbj.weapon);
30             
31             
32             //zbj 和Sun  不是同一類型的
33             alert(zbj instanceof Sun); //false 

    這就是第一種繼承方式。

    【註意】冒用繼承缺點:不能使用原型上的方法和屬性     優點:可以傳遞參數;

 

  2、原型繼承

 1        function Dan(car,money,home){
 2                 this.car = car;
 3                 this.money = money;
 4                 this.home = home;
 5             }
 6             
 7             //發方法聲明在原型對象上
 8             Dan.prototype.shoping = function (){
 9                 alert("買買買");
10             }
11             Dan.prototype.money = "5億";
12             
13             //這個實例化對象是Dan的兒子,可以使用Dan的屬性和方法
14             var son = new Dan("勞斯萊斯幻影","10億","四合院");
15             
16             
17             //創建一個乞丐構造函數
18             function S(name){
19                 this.name = name;
20             }
21             
22             //讓乞丐繼承富豪的屬性和方法
23             //把乞丐的構造函數原型修改成乾爹的原型,這樣,乞丐實例化對象就可以使用乾爹的屬性和方法。(兩種方法)
24 //            S.prototype = Dan.prototype;
25             S.prototype = new Dan();
26             
27             //把S的原型對象constructor指針指回自己,否則會出問題
28             S.prototype.constructor = S;           
29             var s = new S("蘇乞兒");
30             s.shoping();
31             alert(s.money);
32             
33             //判斷s的爸爸是不是  Dan
34             alert(s instanceof Dan);//true  s 和  Dan不是一個東西 

    這種繼承方式就是將新建的父類對象賦給子類構造函數的原型。

     【註意】原型鏈繼承缺點:不能傳遞參數      優點:可以使用原型 上的方法 ;    

 

 

  3、混合繼承 

 1       function Person(name,id,sex){
 2                 this.name = name;
 3                 this.id = id;
 4                 this.sex = sex;
 5                 this.think = function(ss){
 6                     alert(ss);
 7                 }
 8             }
 9             
10             Person.prototype.eat = function(){
11                 alert("呵呵");
12             }
13             
14             
15             
16             function XM(name,id,sex,clas){
17                 this.clas = clas;
18                 //call方法是用來繼承用的。你想繼承那個對性的屬性,就要把屬性傳遞進來;
19 //                Person.call(this,name,id,sex);
20                 
21                 //apply和call功能相同;
22                 //區別  call方法  參數要一個一個傳,  apply方法可以傳參數數組
23                 //優先選擇apply方法使用
24                 Person.apply(this,arguments);
25             }
26             
27             //原型鏈繼承  +  call/apply   叫混合繼承
28             XM.prototype = new Person();
29             XM.prototype.constructor = XM;
30             
31             
32             var xiaoming = new XM("小明","12312112112332","男","一年級二班");
33             alert(xiaoming.name);//列印小明名字屬性
34             xiaoming.think("坎坎坷坷");
35             
36             //現在有一個需要,讓小明可以使用Person對象原型上的方法
37             xiaoming.eat();

    第三種方式就是 冒用繼承 + 原型繼承  ,既能繼承父類的原型,完成復用,又能向父類傳遞參數。

    

    

 

    javascript所有的內容就到這裡了,希望可以幫到大家!!!!!!

 


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

-Advertisement-
Play Games
更多相關文章
  • java 企業網站源碼 前後臺都有 靜態模版引擎, 代碼生成器大大提高開發效率 前臺: 支持三套模版, 可以在後臺切換 系統介紹: 1.網站後臺採用主流的 SSM 框架 jsp JSTL,網站後臺採用freemaker靜態化模版引擎生成html 2.因為是生成的html,所以訪問速度快,輕便,對服務 ...
  • 每個框架都不可避免會有自己的一些特點,從而會對使用者有一定的要求,這些要求就是主張,主張有強有弱,它的強勢程度會影響在業務開發中的使用方式。 一、Angular,它兩個版本都是強主張的,如果你用它,必須接受以下東西:- 必須使用它的模塊機制- 必須使用它的依賴註入- 必須使用它的特殊形式定義組件(這 ...
  • ++++++++++++++++++++++++++++++++++++++++++Nginx反向代理+++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 環境:os centos7.3tengine 2.2.0本案例:兩台Web伺服器, ...
  • 英文:Martin Heller 譯文:葡萄城控制項 學習過程中遇到什麼問題或者想獲取學習資源的話,歡迎加入學習交流群343599877,我們一起學前端! 對於JavaScript程式員來說,目前有很多很棒的工具可供選擇。本文將會討論10個優秀的支持JavaScript,HTML5和CSS開發,並且可 ...
  • HTML form標簽小結 最近研究 form標簽,有一些小心得寫下來與大家分享分享,共勉。在小結的最後有一個form表單的小例子,可以作為參考。 DanlV form是HTML的一個極為重要的功能標簽之一。 輸入域input input type屬性有如下屬性值: 1.button按鈕(具體接下來 ...
  • 相比於JavaScript開發人員的數量,目前JavaScript框架、類庫和工具的數量似乎更多一些。截至2017年5月,GitHub上的快速搜索顯示,有超過110萬個JavaScript項目。npmjs.org有50萬個可用的軟體包,每月下載量近100億次。 本文將會討論目前最為流行的客戶端Jav ...
  • 頁面佈局(layout) header 頭部/頁眉; index 首頁/索引; logo 標誌; nav/sub_nav 導航/子導航; banner 橫幅廣告; main/content 主體/內容; container/con 容器; wrapper/wrap 包裹(類似於container); ...
  • 如果滾動頁面也是DOM沒有解決的一個問題。為瞭解決這個問題,瀏覽器實現了一下方法,以方便開發人員如何更好的控制頁面的滾動。在各種專有方法中,HTML5選擇了scrollIntoView()作為標準方法。scrollIntoView()可以在所有的HTML元素上調用,通過滾動瀏覽器視窗或某個容器元素, ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...