亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JavaScript中神奇的call()方法

 更新時(shí)間:2015年03月12日 10:28:41   投稿:junjie  
這篇文章主要介紹了JavaScript中神奇的call()方法,本文用淺顯的語(yǔ)言幫助你加深理解call()方法,需要的朋友可以參考下

先看看關(guān)于call()的官方解釋,“調(diào)用一個(gè)對(duì)象的一個(gè)方法,以另一個(gè)對(duì)象替換當(dāng)前對(duì)象?!?,看了這樣的解釋,或許讓你更摸不著頭腦了??蠢樱?br />

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

var x = "我是全局變量";    //定義全局變量x
function a(){         //定義函數(shù)類結(jié)構(gòu)a  
    this.x = "我是在函數(shù)類結(jié)構(gòu)a中聲明的哦";   
}
//定義普通函數(shù),彈出當(dāng)前指針?biāo)淖兞縳的值
function f(){      
    alert (this.x);
}
//返回值為“我是在函數(shù)類結(jié)構(gòu)a中聲明的哦”
f.call(new a());

我的理解是,f.call(new a())就是把函數(shù)(其實(shí)也是對(duì)象)f復(fù)制到被調(diào)用對(duì)象“new a()”下面去解析,事實(shí)上和下面這段代碼的解析結(jié)果一樣:
復(fù)制代碼 代碼如下:

function a(){
  this.x = "我是在函數(shù)類結(jié)構(gòu)a中聲明的哦";
  alert(this.x);   
}
a();

只不過(guò)此時(shí)變量X的作用域不同而已,咿…看起來(lái)好像有點(diǎn)繼承的味道哦,難道不是嗎?在上例中,f完全被構(gòu)造函數(shù)a的實(shí)力對(duì)象繼承了,如果說(shuō)這還不足以說(shuō)明a.call(b)是一種繼承模式,那么再看一個(gè)更具有繼承味道的用法吧。
復(fù)制代碼 代碼如下:

function f(){   
    this.a ="a";   
    this.b = function(){   
        alert("b");
    }
}
function e(){   
    f.call(this);    
}
var c = new e();
alert(c.a);  //彈出a
c.b();    //彈出b

在這個(gè)例子中,只要會(huì)使用瀏覽器的朋友,都能看得出來(lái)e完全繼承了f的屬性和方法,否則是無(wú)法解釋的,因?yàn)樵趀中并沒有定義屬性a和b,那么按常理推斷在e的實(shí)例對(duì)象c中,并不會(huì)出現(xiàn)這兩個(gè)屬性。

相關(guān)文章

最新評(píng)論