欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript中的繼承之類繼承

 更新時間:2016年05月01日 10:07:53   作者:prince.shi  
在JS中繼承是一個非常復雜的話題,比其他任何面向對象語言中的繼承都復雜得多。接下來通過本文給大家介紹JavaScript中的繼承之類繼承,感興趣的朋友一起看看吧

繼承簡介

      在JS中繼承是一個非常復雜的話題,比其他任何面向對象語言中的繼承都復雜得多。在大多數(shù)其他面向對象語言中,繼承一個類只需使用一個關鍵字即可。在JS中想要達到繼承公用成員的目的,需要采取一系列措施。JS屬于原型式繼承,得益于這種靈活性,我們既可以使用標準的基于類的繼承,也可以使用更微妙一些的原型式繼承。在JS中應該要明確一點,一切繼承都是通過prototype來進行的,且JS是基于對象來繼承的。

繼承:

function Animal(name){ 
this.name = name; 
this.showName = function(){ 
alert(this.name); 
} 
} 
function Cat(name){ 
Animal.call(this, name); 
} 
var cat = new Cat("Black Cat"); 
cat.showName();

Animal.call(this) 的意思就是使用 Animal對象代替this對象,那么 Cat中不就有Animal的所有屬性和方法了嗎,Cat對象就能夠直接調用Animal的方法以及屬性了.

多繼承:

function Class10() 
{ 
this.showSub = function(a,b) 
{ 
alert(a-b); 
} 
} 
function Class11() 
{ 
this.showAdd = function(a,b) 
{ 
alert(a+b); 
} 
} 
function Class2() 
{ 
Class10.call(this); 
Class11.call(this); 
}

很簡單,使用兩個 call 就實現(xiàn)多重繼承了

當然,js的繼承還有其他方法,例如使用原型鏈,這個不屬于本文的范疇,只是在此說明call 的用法。說了call ,當然還有 apply,這兩個方法基本上是一個意思,區(qū)別在于 call 的第二個參數(shù)可以是任意類型,而apply的第二個參數(shù)必須是數(shù)組,也可以是arguments。

下面給大家介紹如何在JavaScript中實現(xiàn)簡單的繼承?

下面的例子將創(chuàng)建一個雇員類Employee,它從Person繼承了原型prototype中的所有屬性。

function Employee(name, sex, employeeID) {
this.name = name;
this.sex = sex;
this.employeeID = employeeID;
}
// 將Employee的原型指向Person的一個實例
// 因為Person的實例可以調用Person原型中的方法, 所以Employee的實例也可以調用Person原型中的所有屬性。
Employee.prototype = new Person();
Employee.prototype.getEmployeeID = function() {
return this.employeeID;
};
var zhang = new Employee("ZhangSan", "man", "");
console.log(zhang.getName()); // "ZhangSan

上面關于繼承的實現(xiàn)很粗糙,并且存在很多問題:

在創(chuàng)建Employee構造函數(shù)和原型(以后簡稱類)時,就對Person進行了實例化,這是不合適的。

Employee的構造函數(shù)沒法調用父類Person的構造函數(shù),導致在Employee構造函數(shù)中對name和sex屬性的重復賦值。

Employee中的函數(shù)會覆蓋Person中的同名函數(shù),沒有重載的機制(和上一條是一個類型的問題)。

創(chuàng)建JavaScript類的語法過于零散,不如C#/Java中的語法優(yōu)雅。

實現(xiàn)中有constructor屬性的指向錯誤。

相關文章

  • Bootstrap常用組件學習(整理)

    Bootstrap常用組件學習(整理)

    這篇文章是小編日常收集整理的有關bootstrap 常用組件包括Bootstrap 面板(Panels),Bootstrap 多媒體對象(Media Object)知識,非常不錯,需要的朋友參考下吧
    2017-03-03
  • JavaScript中常用的數(shù)組過濾方法例子

    JavaScript中常用的數(shù)組過濾方法例子

    這篇文章主要給大家介紹了關于JavaScript中常用的數(shù)組過濾方法的相關資料,數(shù)組過濾器方法是JavaScript中使用最廣泛的方法之一,它允許我們快速過濾出具有特定條件的數(shù)組中的元素,需要的朋友可以參考下
    2023-11-11
  • JavaScript使用structuredClone實現(xiàn)深拷貝

    JavaScript使用structuredClone實現(xiàn)深拷貝

    在JavaScript中,實現(xiàn)深拷貝的方式有很多種,每種方式都有其優(yōu)點和缺點,今天介紹一種原生JavaScript提供的structuredClone實現(xiàn)深拷貝,文中通過代碼示例給大家介紹的非常詳細,需要的朋友可以參考下
    2024-03-03
  • window.open打開窗口被攔截的快速解決方法

    window.open打開窗口被攔截的快速解決方法

    下面小編就為大家?guī)硪黄獁indow.open打開窗口被攔截的快速解決方法。覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • XP折疊菜單&仿QQ2006菜單

    XP折疊菜單&仿QQ2006菜單

    XP折疊菜單&仿QQ2006菜單...
    2006-12-12
  • require簡單實現(xiàn)單頁應用程序(SPA)

    require簡單實現(xiàn)單頁應用程序(SPA)

    下面小編就為大家?guī)硪黄猺equire簡單實現(xiàn)單頁應用程序(SPA)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • 原生JS實現(xiàn)跑馬燈效果

    原生JS實現(xiàn)跑馬燈效果

    本文主要分享了原生JS實現(xiàn)跑馬燈效果的示例代碼。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • 微信用戶訪問小程序的登錄過程詳解

    微信用戶訪問小程序的登錄過程詳解

    這篇文章主要介紹了微信用戶訪問小程序的登錄過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • JS動態(tài)日期時間的獲取方法

    JS動態(tài)日期時間的獲取方法

    這篇文章主要介紹了js獲得當前系統(tǒng)日期時間的方法,涉及javascript操作日期時間的相關技巧,非常簡單實用,需要的朋友可以參考下
    2015-09-09
  • JS在數(shù)組頭部添加元素的3種方法

    JS在數(shù)組頭部添加元素的3種方法

    JS數(shù)組是一種特殊的對象,JS沒有真正的數(shù)組,只是用對象模擬數(shù)組,下面這篇文章主要給大家介紹了關于JS在數(shù)組頭部添加元素的3種方法,需要的朋友可以參考下
    2023-10-10

最新評論