最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

js繼承call()和apply()方法總結(jié)

 更新時(shí)間:2014年12月08日 09:50:50   投稿:hebedich  
本文介紹了js繼承當(dāng)中的call和apply方法,從定義到常用實(shí)例都做了分析,非常的實(shí)用,推薦給小伙伴們。

1、方法定義

call方法:
語(yǔ)法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]])
定義:調(diào)用一個(gè)對(duì)象的一個(gè)方法,以另一個(gè)對(duì)象替換當(dāng)前對(duì)象。
說(shuō)明:
call 方法可以用來(lái)代替另一個(gè)對(duì)象調(diào)用一個(gè)方法。call 方法可將一個(gè)函數(shù)的對(duì)象上下文從初始的上下文改變?yōu)橛?thisObj 指定的新對(duì)象。
如果沒(méi)有提供 thisObj 參數(shù),那么 Global 對(duì)象被用作 thisObj。

apply方法:
語(yǔ)法:apply([thisObj[,argArray]])
定義:應(yīng)用某一對(duì)象的一個(gè)方法,用另一個(gè)對(duì)象替換當(dāng)前對(duì)象。
說(shuō)明:
如果 argArray 不是一個(gè)有效的數(shù)組或者不是 arguments 對(duì)象,那么將導(dǎo)致一個(gè) TypeError。
如果沒(méi)有提供 argArray 和 thisObj 任何一個(gè)參數(shù),那么 Global 對(duì)象將被用作 thisObj, 并且無(wú)法被傳遞任何參數(shù)。

2、常用實(shí)例

a、

復(fù)制代碼 代碼如下:

function add(a,b) 

    alert(a+b); 

function sub(a,b) 

    alert(a-b); 

add.call(sub,3,1);  

 這個(gè)例子中的意思就是用 add 來(lái)替換 sub,add.call(sub,3,1) == add(3,1) ,所以運(yùn)行結(jié)果為:alert(4); // 注意:js 中的函數(shù)其實(shí)是對(duì)象,函數(shù)名是對(duì) Function 對(duì)象的引用。

b、

復(fù)制代碼 代碼如下:

function Animal(){   
    this.name = "Animal";   
    this.showName = function(){   
        alert(this.name);   
    }   
}   
function Cat(){   
    this.name = "Cat";   
}   
var animal = new Animal();   
var cat = new Cat();   
//通過(guò)call或apply方法,將原本屬于Animal對(duì)象的showName()方法交給對(duì)象cat來(lái)使用了。   
//輸入結(jié)果為"Cat"   
animal.showName.call(cat,",");   
//animal.showName.apply(cat,[]); 

 call 的意思是把 animal 的方法放到cat上執(zhí)行,原來(lái)cat是沒(méi)有showName() 方法,現(xiàn)在是把a(bǔ)nimal 的showName()方法放到 cat上來(lái)執(zhí)行,所以this.name 應(yīng)該是 Cat

c、實(shí)現(xiàn)繼承

復(fù)制代碼 代碼如下:

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對(duì)象代替this對(duì)象,那么 Cat中不就有Animal的所有屬性和方法了嗎,Cat對(duì)象就能夠直接調(diào)用Animal的方法以及屬性了.

d、多重繼承

復(fù)制代碼 代碼如下:

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); 

 很簡(jiǎn)單,使用兩個(gè) call 就實(shí)現(xiàn)多重繼承了
當(dāng)然,js的繼承還有其他方法,例如使用原型鏈,這個(gè)不屬于本文的范疇,只是在此說(shuō)明call 的用法。說(shuō)了call ,當(dāng)然還有 apply,這兩個(gè)方法基本上是一個(gè)意思,區(qū)別在于 call 的第二個(gè)參數(shù)可以是任意類型,而apply的第二個(gè)參數(shù)必須是數(shù)組,也可以是arguments
還有 callee,caller..

相關(guān)文章

  • 如何理解JS函數(shù)防抖和函數(shù)節(jié)流

    如何理解JS函數(shù)防抖和函數(shù)節(jié)流

    函數(shù)防抖和函數(shù)節(jié)流都是對(duì)函數(shù)進(jìn)行特殊的設(shè)置,減少該函數(shù)在某一時(shí)間段內(nèi)頻繁觸發(fā)帶來(lái)的副作用。二者只是采用的設(shè)置方式和原理不一樣,其最終的目的是一樣的。
    2021-05-05
  • 微信小程序的注冊(cè)頁(yè)面包含倒計(jì)時(shí)驗(yàn)證碼、獲取用戶信息

    微信小程序的注冊(cè)頁(yè)面包含倒計(jì)時(shí)驗(yàn)證碼、獲取用戶信息

    本文通過(guò)實(shí)例代碼給大家介紹了微信小程序的注冊(cè)頁(yè)面包含倒計(jì)時(shí)驗(yàn)證碼、獲取用戶信息的相關(guān)知識(shí),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2019-05-05
  • 通過(guò)url查找a元素應(yīng)用案例

    通過(guò)url查找a元素應(yīng)用案例

    這篇文章主要介紹了通過(guò)url查找a元素的實(shí)現(xiàn)思路,解決一些比較實(shí)際的問(wèn)題,感興趣的朋友可以參考下
    2014-04-04
  • JavaScript?編寫枚舉的最有效方法分享

    JavaScript?編寫枚舉的最有效方法分享

    這篇文章主要介紹了JavaScript?編寫枚舉的最有效方法分享,JavaScript語(yǔ)言本身不支持枚舉。如果我們想模擬枚舉,我們可以使用一個(gè)對(duì)象。更多相關(guān)內(nèi)容感興趣的小伙伴可以參考一下
    2022-06-06
  • JS時(shí)間戳與日期格式互相轉(zhuǎn)換的簡(jiǎn)單方法示例

    JS時(shí)間戳與日期格式互相轉(zhuǎn)換的簡(jiǎn)單方法示例

    這篇文章主要給大家介紹了關(guān)于JS時(shí)間戳與日期格式互相轉(zhuǎn)換的簡(jiǎn)單方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • js開(kāi)發(fā)插件實(shí)現(xiàn)tab選項(xiàng)卡效果

    js開(kāi)發(fā)插件實(shí)現(xiàn)tab選項(xiàng)卡效果

    這篇文章主要為大家詳細(xì)介紹了js開(kāi)發(fā)插件實(shí)現(xiàn)tab選項(xiàng)卡效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Javascript實(shí)現(xiàn)重力彈跳拖拽運(yùn)動(dòng)效果示例

    Javascript實(shí)現(xiàn)重力彈跳拖拽運(yùn)動(dòng)效果示例

    本文為大家詳細(xì)介紹下使用Javascript實(shí)現(xiàn)重力彈跳拖拽運(yùn)動(dòng)的具體調(diào)用方法,感興趣的朋友可以參考下哈
    2013-06-06
  • IE8 chrome中table隔行換色解決辦法

    IE8 chrome中table隔行換色解決辦法

    今天把項(xiàng)目生成好后,發(fā)布到萬(wàn)維網(wǎng)上進(jìn)行測(cè)試,發(fā)現(xiàn)table的隔行換色在IE8,chorem中不能正常顯示。找了許多資料,CSS看樣是不能解決,只能用JS來(lái)控制了
    2010-07-07
  • JavaScript實(shí)現(xiàn)打地鼠游戲

    JavaScript實(shí)現(xiàn)打地鼠游戲

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)打地鼠游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • Javascript中各種trim的實(shí)現(xiàn)詳細(xì)解析

    Javascript中各種trim的實(shí)現(xiàn)詳細(xì)解析

    這篇文章主要是對(duì)Javascript中各種trim的實(shí)現(xiàn)進(jìn)行了詳細(xì)的介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-12-12

最新評(píng)論

临澧县| 尉氏县| 灵宝市| 耒阳市| 神池县| 诸城市| 黄骅市| 宜城市| 婺源县| 叙永县| 固原市| 寿光市| 大石桥市| 聂荣县| 辽阳市| 南皮县| 广西| 镇远县| 忻城县| 苍山县| 乐平市| 崇礼县| 乌兰察布市| 西盟| 苗栗县| 平南县| 高平市| 梧州市| 佳木斯市| 乐平市| 思茅市| 勃利县| 仁寿县| 澳门| 常山县| 玉环县| 祥云县| 松江区| 吴川市| 子长县| 河东区|