Js 使用call 來繼承對象

1架专、方法定義
call方法: 語法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定義:調(diào)用一個對象的一個方法,以另一個對象替換當(dāng)前對象旬痹。 說明: call 方法可以用來代替另一個對象調(diào)用一個方法附井。call 方法可將一個函數(shù)的對象上下文從初始的上下文改變?yōu)橛?thisObj 指定的新對象讨越。 如果沒有提供 thisObj 參數(shù),那么 Global 對象被用作 thisObj永毅。 apply方法: 語法:apply([thisObj[,argArray]]) 定義:應(yīng)用某一對象的一個方法把跨,用另一個對象替換當(dāng)前對象。 說明: 如果 argArray 不是一個有效的數(shù)組或者不是 arguments 對象沼死,那么將導(dǎo)致一個 TypeError着逐。 如果沒有提供 argArray 和 thisObj 任何一個參數(shù),那么 Global 對象將被用作 thisObj意蛀, 并且無法被傳遞任何參數(shù)耸别。

2、常用實(shí)例
a县钥、
Java代碼

收藏代碼

function add(a,b)  
{  
    alert(a+b);  
}  
function sub(a,b)  
{  
    alert(a-b);  
}  

add.call(sub,3,1);   

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

b、

Java代碼
收藏代碼
function Animal(){    
    this.name = "Animal";    
    this.showName = function(){    
        alert(this.name);    
    }    
}    
  
function Cat(){    
    this.name = "Cat";    
}    
   
var animal = new Animal();    
var cat = new Cat();    

//通過call或apply方法谴麦,將原本屬于Animal對象的showName()方法交給對象cat來使用了蠢沿。
//輸入結(jié)果為"Cat"
animal.showName.call(cat,",");
//animal.showName.apply(cat,[]);

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

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

Java代碼
收藏代碼
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對象就能夠直接調(diào)用Animal的方法以及屬性了.

d碗殷、多重繼承

Java代碼
收藏代碼
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 就實(shí)現(xiàn)多重繼承了當(dāng)然,js的繼承還有其他方法锌妻,例如使用原型鏈代乃,這個不屬于本文的范疇,只是在此說明call 的用法仿粹。說了call 搁吓,當(dāng)然還有 apply,這兩個方法基本上是一個意思吭历,區(qū)別在于 call 的第二個參數(shù)可以是任意類型堕仔,而apply的第二個參數(shù)必須是數(shù)組,也可以是arguments還有 callee晌区,caller..

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末摩骨,一起剝皮案震驚了整個濱河市通贞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌恼五,老刑警劉巖昌罩,帶你破解...
    沈念sama閱讀 212,029評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異灾馒,居然都是意外死亡茎用,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評論 3 385
  • 文/潘曉璐 我一進(jìn)店門睬罗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來轨功,“玉大人,你說我怎么就攤上這事容达『幌剑” “怎么了?”我有些...
    開封第一講書人閱讀 157,570評論 0 348
  • 文/不壞的土叔 我叫張陵董饰,是天一觀的道長蒿褂。 經(jīng)常有香客問我,道長卒暂,這世上最難降的妖魔是什么啄栓? 我笑而不...
    開封第一講書人閱讀 56,535評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮也祠,結(jié)果婚禮上昙楚,老公的妹妹穿的比我還像新娘。我一直安慰自己诈嘿,他們只是感情好堪旧,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,650評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著奖亚,像睡著了一般淳梦。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上昔字,一...
    開封第一講書人閱讀 49,850評論 1 290
  • 那天爆袍,我揣著相機(jī)與錄音,去河邊找鬼作郭。 笑死陨囊,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的夹攒。 我是一名探鬼主播蜘醋,決...
    沈念sama閱讀 39,006評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼咏尝!你這毒婦竟也來了压语?” 一聲冷哼從身側(cè)響起闲先,我...
    開封第一講書人閱讀 37,747評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎无蜂,沒想到半個月后伺糠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,207評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡斥季,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,536評論 2 327
  • 正文 我和宋清朗相戀三年训桶,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片酣倾。...
    茶點(diǎn)故事閱讀 38,683評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡舵揭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出躁锡,到底是詐尸還是另有隱情午绳,我是刑警寧澤,帶...
    沈念sama閱讀 34,342評論 4 330
  • 正文 年R本政府宣布映之,位于F島的核電站拦焚,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏杠输。R本人自食惡果不足惜赎败,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,964評論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蠢甲。 院中可真熱鬧僵刮,春花似錦、人聲如沸鹦牛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽曼追。三九已至窍仰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拉鹃,已是汗流浹背辈赋。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留膏燕,地道東北人。 一個月前我還...
    沈念sama閱讀 46,401評論 2 360
  • 正文 我出身青樓悟民,卻偏偏與公主長得像坝辫,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子射亏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,566評論 2 349

推薦閱讀更多精彩內(nèi)容

  • 開始看到j(luò)avascript的函數(shù)apply和call時,非常的模糊,由于最近在找工作應(yīng)對面試近忙,在網(wǎng)上看到一些文章...
    小搖歌閱讀 624評論 0 0
  • 一、call()和apply()方法 1.方法定義 call方法: 語法:call([thisObj[,arg1[...
    O你的微笑好美O閱讀 384評論 0 0
  • 在JavaScript中拙友,call、apply和bind是Function對象自帶的三個方法歼郭,這三個方法的主要作用...
    人不中二枉少年閱讀 471評論 0 6
  • 1:原型繼承 為了讓子類繼承父類的屬性(也包括方法)遗契,首先需要定義一個構(gòu)造函數(shù)。然后病曾,將父類的新實(shí)例賦值給構(gòu)造函數(shù)...
    codeSirCao閱讀 242評論 0 0
  • 二十七八歲的年紀(jì)牍蜂,單身好像變成了一件讓人覺得羞恥的事情。這個尷尬的年齡泰涂,其實(shí)你也渴望安定些捷兰,但總怕被固定在一個模式...
    慢慢慢慢慢熱C閱讀 117評論 0 0