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

JavaScript中神奇的call()方法

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

先看看關(guān)于call()的官方解釋,“調(diào)用一個(gè)對象的一個(gè)方法,以另一個(gè)對象替換當(dāng)前對象。”,看了這樣的解釋,或許讓你更摸不著頭腦了。看例子:

復(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í)也是對象)f復(fù)制到被調(diào)用對象“new a()”下面去解析,事實(shí)上和下面這段代碼的解析結(jié)果一樣:
復(fù)制代碼 代碼如下:

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

只不過此時(shí)變量X的作用域不同而已,咿…看起來好像有點(diǎn)繼承的味道哦,難道不是嗎?在上例中,f完全被構(gòu)造函數(shù)a的實(shí)力對象繼承了,如果說這還不足以說明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ì)使用瀏覽器的朋友,都能看得出來e完全繼承了f的屬性和方法,否則是無法解釋的,因?yàn)樵趀中并沒有定義屬性a和b,那么按常理推斷在e的實(shí)例對象c中,并不會(huì)出現(xiàn)這兩個(gè)屬性。

相關(guān)文章

最新評(píng)論

清苑县| 新竹市| 兴业县| 佳木斯市| 运城市| 云安县| 怀仁县| 永春县| 清徐县| 蓬安县| 兴和县| 禄劝| 永安市| 九龙坡区| 宜春市| 麻阳| 桐城市| 闵行区| 湘潭市| 淳化县| 弋阳县| 剑川县| 尼木县| 西盟| 青铜峡市| 抚顺市| 肃南| 昌邑市| 武穴市| 搜索| 安庆市| 和硕县| 宜昌市| 吉木萨尔县| 宣城市| 广河县| 望奎县| 正安县| 开远市| 福泉市| 新绛县|