国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JavaScript中神奇的call()方法

2024-05-06 16:16:36
字體:
供稿:網(wǎng)友
這篇文章主要介紹了JavaScript中神奇的call()方法,本文用淺顯的語言幫助你加深理解call()方法,需要的朋友可以參考下
 

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

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

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

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

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

只不過此時變量X的作用域不同而已,咿…看起來好像有點繼承的味道哦,難道不是嗎?在上例中,f完全被構(gòu)造函數(shù)a的實力對象繼承了,如果說這還不足以說明a.call(b)是一種繼承模式,那么再看一個更具有繼承味道的用法吧。
復(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

在這個例子中,只要會使用瀏覽器的朋友,都能看得出來e完全繼承了f的屬性和方法,否則是無法解釋的,因為在e中并沒有定義屬性a和b,那么按常理推斷在e的實例對象c中,并不會出現(xiàn)這兩個屬性。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 黎平县| 石狮市| 巴楚县| 赤壁市| 乌苏市| 东平县| 黔东| 福贡县| 如东县| 湄潭县| 教育| 东宁县| 华容县| 图片| 定西市| 四子王旗| 武夷山市| 改则县| 巧家县| 鄢陵县| 莲花县| 锦州市| 哈巴河县| 宁晋县| 揭西县| 图片| 阿图什市| 竹北市| 昌平区| 二手房| 光泽县| 峡江县| 正宁县| 延寿县| 开远市| 特克斯县| 荥阳市| 沙坪坝区| 星子县| 嫩江县| 黄冈市|