js實現繼承的幾種方式

2021-07-25 14:57:09 字數 1856 閱讀 7534

一,js中物件繼承

js中有三種繼承方式

1.js原型(prototype)實現繼承

複製**

**如下:

2.建構函式實現繼承

複製**

**如下:

複製**

**如下: 

js手冊中對call的解釋:

複製**

**如下:

call 方法 

呼叫乙個物件的乙個方法,以另乙個物件替換當前物件。 

call([thisobj[,arg1[, arg2[,   [,.argn]]]]]) 

引數 

thisobj 

可選項。將被用作當前物件的物件。 

arg1, arg2,  , argn 

可選項。將被傳遞方法引數序列。 

說明 

call 方法可以用來代替另乙個物件呼叫乙個方法。call 方法可將乙個函式的物件上下文從初始的上下文改變為由 thisobj 指定的新物件。 

如果沒有提供 thisobj 引數,那麼 global 物件被用作 thisobj。

複製**

**如下:

function person(name,age); 

}  function print() 

}  alert(msg.join(" ")); 

}; 

}  function student(name,age,grade,school) 

var p1=new person("卜開化",80); 

p1.sayhello(); 

var s1=new student("白雲飛",40,9,"嶽麓書院"); 

s1.show(); 

s1.sayhello(); 

alert(s1.funcname);

我們先從math.max()函式說起,math.max後面可以接任意個引數,最後返回所有引數中的最大值。

比如複製**

**如下:

alert(math.max(5,8));   //8  

alert(math.max(5,7,9,3,1,6));   //9  

//但是在很多情況下,我們需要找出陣列中最大的元素。  

var arr=[5,7,9,1]; 

//alert(math.max(arr));    // 這樣卻是不行的。nan  

//要這樣寫  

function getmax(arr) 

return ret; 

}  alert(getmax(arr)); //9  

function getmax2(arr) 

alert(getmax2(arr)); //9  

//兩段**達到了同樣的目的,但是getmax2卻優雅,高效,簡潔得多。  

//再比如陣列的push方法。  

var arr1=[1,3,4]; 

var arr2=[3,4,5]; 

//如果我們要把 arr2展開,然後乙個乙個追加到arr1中去,最後讓arr1=[1,3,4,3,4,5]  

顯然是不行的。 因為這樣做會得到[1,3,4,[3,4,5]]  

//我們只能用乙個迴圈去乙個乙個的push(當然也可以用arr1.concat(arr2),但是concat方法並不改變arr1本身)  

var arrlen=arr2.length; 

for(var i=0;i

JS實現繼承的幾種方式

取自 1.js實現繼承的幾種方式 2.js 物件導向之繼承 多種組合繼承 js作為物件導向的弱型別語言,繼承也是其非常強大的特性之一。那麼如何在js中實現繼承呢?讓我們拭目以待。既然要實現繼承,那麼首先我們得有乙個父類,如下 定義乙個動物類 function animal name 原型方法 ani...

JS實現繼承的幾種方式

前言 js作為物件導向的弱型別語言,繼承也是其非常強大的特性之一。那麼如何在js中實現繼承呢?讓我們拭目以待。既然要實現繼承,那麼首先我們得有乙個父類,如下 定義乙個動物類 function animal name 原型方法 animal.prototype.eat function food 核心...

JS實現繼承的幾種方式

文章 1 原型鏈繼承 核心 將父類的例項作為子類的原型 2 構造繼承 核心 使用父類的建構函式來增強子類例項,等於是複製父類的例項屬性給子類 沒用到原型 3 例項繼承 核心 為父類例項新增新特性,作為子類例項返回 4 拷貝繼承 5 組合繼承 核心 通過呼叫父類構造,繼承父類的屬性並保留傳參的優點,然...