JavaScript繼承定義與用法實(shí)踐分析
本文實(shí)例講述了JavaScript繼承定義與用法。分享給大家供大家參考,具體如下:
javascript 繼承 , 老生長(zhǎng)談的東西, 大家應(yīng)該都很熟悉了, 平時(shí)工作基本不會(huì)直接使用, 這段時(shí)間不忙, 所以補(bǔ)習(xí)了下相關(guān)基礎(chǔ)知識(shí) ,自己動(dòng)手實(shí)踐, 加深理解:
基類(lèi)定義如下:
// base class
function Animal(t)
{
if(typeof t==='string')
this.type=t;
else
{
if(t)
this.type=t.toString();
else
this.type='Animal'
}
this.speak=function(str)
{
if(str)
console.log(this.type+' said '+str);
else
throw "please specify what you want to say!";
}
}
1. 原型繼承 (javascript 類(lèi)庫(kù)本身基于原型繼承)
String, Number , Boolean 這三大原始類(lèi)型 我們可以很直接的通過(guò)prototype 檢查到他們繼承自Object.
Date, RegExp ,Array 這三應(yīng)該是間接繼承了Object, 他們的prototype屬性很特殊 :
Date.prototype =Invalid Date RegExp.prototype=/(?:)/ Array.prototype=[]
原型繼承代碼如下: (可以看到Mokey 原型鏈上的Animal和Object)
// Monkey : Animal
function Monkey(name,age)
{
this.name=name;
this.age=age;
}
Monkey.prototype=new Animal('Monkey');
// Example 01
var m=new Monkey('codeMonkey',10);
/*
Monkey:
age: 10
name: "codeMonkey"
__proto__: Animal
speak: function (str)
type: "Monkey"
__proto__: Animal
constructor: function Animal(t)
__proto__: Object
*/
console.log(m.type); // Monkey
console.log(m.name); // codeMonkey
console.log(m.age); // 10
m.speak('hello world') // Monkey said hello world
2. 調(diào)用父類(lèi)構(gòu)造函數(shù) ( 通過(guò)傳遞子類(lèi)的this指針 , 將原本是父類(lèi)的公開(kāi)成員直接添加到了子類(lèi)中,從子類(lèi)原型鏈中無(wú)法看出繼承關(guān)系)
// Human:Animal
function Human(id,name)
{
// call base class's constuctor function
Animal.call(this,'Human');
this.id=id;
this.name=name;
}
var h=new Human(1,'leon');
/*
id: 1
name: "leon"
speak: function (str)
type: "Human"
__proto__: Human
constructor: function Human(id,name)
__proto__: Object
*/
h.speak('hello world'); // Human said hello world
console.log(h.type); // Human
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《javascript面向?qū)ο笕腴T(mén)教程》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
- JavaScript繼承與多繼承實(shí)例分析
- JavaScript實(shí)現(xiàn)多重繼承的方法分析
- 深入淺析javascript繼承體系
- JS繼承與閉包及JS實(shí)現(xiàn)繼承的三種方式
- js中繼承的幾種用法總結(jié)(apply,call,prototype)
- JavaScript是如何實(shí)現(xiàn)繼承的(六種方式)
- 深入了解javascript中的prototype與繼承
- Javascript基于對(duì)象三大特性(封裝性、繼承性、多態(tài)性)
- javascript的函數(shù)、創(chuàng)建對(duì)象、封裝、屬性和方法、繼承
- Javascript 繼承機(jī)制的實(shí)現(xiàn)
- JavaScript的原型繼承詳解
相關(guān)文章
js 得到文件后綴(通過(guò)正則實(shí)現(xiàn))
使用js獲取文件的后綴,有個(gè)不錯(cuò)的正則,大家可以借用下,具體如下,感興趣的朋友可以參考下哈,希望對(duì)大家有所幫助2013-07-07
JS實(shí)現(xiàn)多級(jí)菜單中當(dāng)前菜單不隨頁(yè)面跳轉(zhuǎn)樣式而發(fā)生變化
本文介紹了JQuery巧妙實(shí)現(xiàn)多級(jí)菜單中當(dāng)前菜單不隨頁(yè)面跳轉(zhuǎn)樣式發(fā)生變化,實(shí)現(xiàn)方法非常簡(jiǎn)單,感興趣的朋友一起看看吧2017-05-05
詳解微信小程序 頁(yè)面跳轉(zhuǎn) 傳遞參數(shù)
這篇文章主要介紹了詳解微信小程序 頁(yè)面跳轉(zhuǎn) 傳遞參數(shù),現(xiàn)在分享給大家,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-12-12
通過(guò) JS 判斷頁(yè)面是否有滾動(dòng)條的實(shí)現(xiàn)方法
最近在寫(xiě)插件的過(guò)程中,需要使用 JS 判斷是否有滾動(dòng)條,搜了一下,大致方法都差不多,但都有些啰嗦,代碼不夠簡(jiǎn)潔。最終通過(guò)參考不同方法,寫(xiě)了一個(gè)比較簡(jiǎn)單的方法2018-04-04
js利用prototype調(diào)用Array的slice方法示例
這篇文章主要介紹了如何利用js的prototype調(diào)用Array的slice方法,需要的朋友可以參考下2014-06-06
基于JavaScript代碼實(shí)現(xiàn)隨機(jī)漂浮圖片廣告
在網(wǎng)上有很多這樣的代碼,不過(guò)未必符合W3C標(biāo)準(zhǔn),因?yàn)樵陬^部加上<!DOCTYPE html>類(lèi)似標(biāo)簽之后,漂浮效果就會(huì)失效,下面分享一個(gè)符合標(biāo)準(zhǔn)的漂浮代碼,使需要的朋友免去大量改造代碼的繁瑣2016-01-01
微信小程序?qū)崿F(xiàn)獲取用戶(hù)信息替換用戶(hù)名和頭像到首頁(yè)
本文詳細(xì)講解了微信小程序?qū)崿F(xiàn)獲取用戶(hù)信息替換用戶(hù)名和頭像到首頁(yè)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06
webpack4手動(dòng)搭建Vue開(kāi)發(fā)環(huán)境實(shí)現(xiàn)todoList項(xiàng)目的方法
這篇文章主要介紹了webpack4手動(dòng)搭建Vue開(kāi)發(fā)環(huán)境實(shí)現(xiàn)todoList項(xiàng)目的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05

