欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

JavaScript直接調(diào)用函數(shù)與call調(diào)用有什么區(qū)別

小編這次要給大家分享的是JavaScript直接調(diào)用函數(shù)與call調(diào)用有什么區(qū)別,文章內(nèi)容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

澄海ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!

直接調(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()只在傳參形式上有些差別而已.

看完這篇關(guān)于JavaScript直接調(diào)用函數(shù)與call調(diào)用有什么區(qū)別的文章,如果覺得文章內(nèi)容寫得不錯的話,可以把它分享出去給更多人看到。

網(wǎng)站欄目:JavaScript直接調(diào)用函數(shù)與call調(diào)用有什么區(qū)別
網(wǎng)頁網(wǎng)址:http://aaarwkj.com/article30/isjjso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供服務(wù)器托管、動態(tài)網(wǎng)站用戶體驗、網(wǎng)站維護、品牌網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)
亚洲第一毛片免费在线观看| 最新天堂av资源在线观看| 国产在线拍揄自揄视频不卡99| 黄色国产传媒在线播放| 亚洲最新一区二区在线观看| 午夜福利激情视频在线| 日韩欧美一区二区不卡在线| 午夜麻豆影网在线观看| 日韩一区二区三区av观看| 亚洲美女高潮久久久久久久久| 国语精品对白交换日韩| 日本人妻系列在线播放| 日本精品在线一区二区| 日韩夫妻精品熟妇人妻一区| 在线高清视频无卡不码| 国产久精品热看久品热久热| 另类国产人妖免费视频网站大全| 日本区一区二区三高清视频| 东京热男人的天堂色狠爱| 九月丁香花开综合网| 亚洲国产韩国精品在线| 免费黄色福利网址大片| 精品福利视频蜜臀91| 国产91精品成人在线观看| 人妻熟女一区二区视频| 免费午夜福利一区二区| 国产女主播高清在线视频| 麻豆影片在线免费观看| 羞涩插射视频网站在线观看| 日本岛国免费一区二区| 亚洲精品国产熟女av| 在线激情视频一区二区| 日韩精品不卡在线观看| 国产又粗又长又大无遮挡| 亚洲av日韩av高潮| 亚洲国产自拍偷拍视频| 成人色视频免费在线观看| 国产一级夫妻性生活欧美| 日本在线看片一区二区| 日韩中字伦理熟妇人妻| 熟女精品国产一区二区三区|