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

JavaScript直接調(diào)用函數(shù)與call調(diào)用的區(qū)別實例分析

 更新時間:2020年05月22日 10:34:35   作者:NO0b  
這篇文章主要介紹了JavaScript直接調(diào)用函數(shù)與call調(diào)用的區(qū)別,結(jié)合額實例形式分析了JavaScript直接調(diào)用函數(shù)與call調(diào)用的基本用法、區(qū)別及相關(guān)注意事項,需要的朋友可以參考下

本文實例講述了JavaScript直接調(diào)用函數(shù)與call調(diào)用的區(qū)別。分享給大家供大家參考,具體如下:

直接調(diào)用

直接調(diào)用函數(shù)是最常見 最普通的方式,直接以函數(shù)附加的對象作為調(diào)用者, 在函數(shù)后括號內(nèi)傳入?yún)?shù)來調(diào)用函數(shù)

例如:

window.alert("測試代碼");

其中調(diào)用者如果是window可以省略, 即直接alert("測試代碼");

以call() 方法調(diào)用函數(shù)

語法:call([thisObject[,arg1 [,arg2 [,...,argn]]]]);

新同學看來好像直接調(diào)用就夠了, 其實不然, 直接調(diào)用函數(shù)方式簡單易用但不夠靈活,  有些時候調(diào)用函數(shù)時需要動態(tài)地傳入一個函數(shù)的引用,此時為了動態(tài)地調(diào)用函數(shù),就需要使用call方法來調(diào)用了

舉個例子:

<script type="text/javascript">
var each =function(array,fn)
{
 for(var index in array)
 {
 fn.call(null,index,array[index]);
 }
}
each([4,20,3],function (index,ele)
{
 document.write("第"+index+"個元素是"+ele+"<br/>");
}
 
);
</script>

乍看可能比較暈, 注意fn.call語句, call調(diào)用的格式是在參數(shù)第一個填調(diào)用者,后邊按順序輸入?yún)?shù),  參數(shù)形式比較特別, 與直接調(diào)用不同,調(diào)用者不寫在前面, 而是參數(shù)第一項.   格式: fn.call(obj,args);

看到這里大家應(yīng)該會有疑問,  call到底和直接調(diào)用有什么區(qū)別, 區(qū)別就在于call調(diào)用修改了this指針的指向, 如果被調(diào)用的函數(shù)里壓根沒用到this也就沒有什么區(qū)別了

再舉一個被調(diào)用函數(shù)有this指針的例子:

var x = "我是全局變量";    //定義全局變量x
function a(){         //定義函數(shù)類結(jié)構(gòu)a 
  this.x = "我是在函數(shù)類結(jié)構(gòu)a中聲明的哦";
}
//定義普通函數(shù),彈出當前指針所包含的變量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é)果一樣:

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

事實上,是在調(diào)用f.call()的時候,修改了f()中的this指向。本來,f中的this.a,this.b屬性都是自身的,但是通過f.call()調(diào)用時,傳入了一個新的對象e()(this),這樣,將e綁定到了f的this中,本來是給f增加的屬性,加到了e中。(e與e(),f與f()都是等價的)有點類似于“繼承”,但是這個應(yīng)該叫 JS中對象冒充

以apply()方式調(diào)用函數(shù)

apply() 方法與call()方法的功能節(jié)本相似 ,都可以用來動態(tài)地調(diào)用函數(shù). apply()與call()的區(qū)別如下:

  • 通過call()調(diào)用函數(shù)時必須在括號中詳細地列出每個參數(shù)
  • apply()動態(tài)地調(diào)用函數(shù)時, 需要以數(shù)組的形式一次性傳入所有調(diào)用參數(shù)

語法:apply([thisObj [,argArray] ]);

比如下面的兩個語句是相等的:

myfun.call(window,12,13);
myfun.capply(window,[12,13]);

修改this指針這點上,apply()與call()也保持一致, 

大體上來說apply()與call()只在傳參形式上有些差別而已.

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。

更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《JavaScript常用函數(shù)技巧匯總》、《javascript面向?qū)ο笕腴T教程》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》及《JavaScript數(shù)學運算用法總結(jié)

希望本文所述對大家JavaScript程序設(shè)計有所幫助。

相關(guān)文章

  • JS實現(xiàn)光滑展開合攏的菜單效果代碼

    JS實現(xiàn)光滑展開合攏的菜單效果代碼

    這篇文章主要介紹了JS實現(xiàn)光滑展開合攏的菜單效果代碼,涉及JavaScript響應(yīng)鼠標事件遍歷并改變頁面元素屬性的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • JavaScript庫之vanilla-tilt使用教程(一個平滑的3D傾斜庫)

    JavaScript庫之vanilla-tilt使用教程(一個平滑的3D傾斜庫)

    vanilla-tilt.js是Javascript中一個平滑的3D傾斜庫,可以讓網(wǎng)頁的一些控件變得動態(tài)起來,下面這篇文章主要給大家介紹了關(guān)于JavaScript庫之vanilla-tilt使用的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • JavaScript實現(xiàn)下拉列表效果

    JavaScript實現(xiàn)下拉列表效果

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)下拉列表效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • JavaScript Date對象應(yīng)用實例分享

    JavaScript Date對象應(yīng)用實例分享

    這篇文章主要分享了JavaScript Date對象應(yīng)用實例,獲取日期時間,倒計時功能實現(xiàn),限時搶購活動,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Javascript基于對象三大特性(封裝性、繼承性、多態(tài)性)

    Javascript基于對象三大特性(封裝性、繼承性、多態(tài)性)

    這篇文章主要介紹了Javascript基于對象三大特性,包括封裝性、繼承性、多態(tài)性,感興趣的小伙伴們可以參考一下
    2016-01-01
  • JavaScript添加隨滾動條滾動窗體的方法

    JavaScript添加隨滾動條滾動窗體的方法

    這篇文章主要介紹了JavaScript添加隨滾動條滾動窗體的方法,涉及JavaScript事件響應(yīng)及頁面元素動態(tài)操作相關(guān)技巧,需要的朋友可以參考下
    2016-02-02
  • JS將圖片轉(zhuǎn)Base64的2種方法代碼

    JS將圖片轉(zhuǎn)Base64的2種方法代碼

    這篇文章主要給大家介紹了關(guān)于JS將圖片轉(zhuǎn)Base64的2種方法,base64 其實是一種編碼轉(zhuǎn)換方式,將ASCII字符轉(zhuǎn)換成普通文本,是網(wǎng)絡(luò)上最常見的用于傳輸8Bit字節(jié)代碼的編碼方式之一,需要的朋友可以參考下
    2024-05-05
  • JavaScript閉包原理與用法學習筆記

    JavaScript閉包原理與用法學習筆記

    這篇文章主要介紹了JavaScript閉包原理與用法,結(jié)合實例形式詳細分析了JavaScript閉包相關(guān)概念、原理、用法及操作注意事項,需要的朋友可以參考下
    2020-05-05
  • Uniapp接入插件的3種方式總結(jié)

    Uniapp接入插件的3種方式總結(jié)

    我們在做uniapp的項目的時候經(jīng)常需要用到各種插件,下面這篇文章主要給大家介紹了關(guān)于Uniapp接入插件的3種方式的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • JavaScript實現(xiàn)簡單的拖拽效果

    JavaScript實現(xiàn)簡單的拖拽效果

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)簡單的拖拽效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11

最新評論

西乌珠穆沁旗| 英吉沙县| 旅游| 陇西县| 布尔津县| 海南省| 永嘉县| 宜春市| 平顶山市| 诸城市| 闵行区| 密云县| 南涧| 抚松县| 科技| 运城市| 洛扎县| 宁乡县| 北流市| 泗阳县| 金阳县| 凤城市| 轮台县| 昆明市| 根河市| 惠东县| 乾安县| 越西县| 关岭| 乌兰察布市| 微山县| 禄丰县| 宜兰市| 凤台县| 西乌珠穆沁旗| 富锦市| 合川市| 夏河县| 舞阳县| 鄯善县| 贵溪市|