日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

javascript:call和apply函数的用法(转载)

發布時間:2024/8/23 javascript 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javascript:call和apply函数的用法(转载) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JavaScript中有一個call和apply方法,其作用基本相同,但也有略微的區別。

先來看看JS手冊中對call的解釋:

call 方法
調用一個對象的一個方法,以另一個對象替換當前對象。

call([thisObj[,arg1[, arg2[,?? [,.argN]]]]])

參數
thisObj
可選項。將被用作當前對象的對象。

arg1, arg2,??, argN
可選項。將被傳遞方法參數序列。

說明
call 方法可以用來代替另一個對象調用一個方法。call 方法可將一個函數的對象上下文從初始的上下文改變為由 thisObj 指定的新對象。

如果沒有提供 thisObj 參數,那么 Global 對象被用作 thisObj。

說明白一點其實就是更改對象的內部指針,即改變對象的this指向的內容。這在面向對象的js編程過程中有時是很有用的。

引用網上一個代碼段,運行后自然就明白其道理。

<input?type="text"?id="myText"???value="input?text">
<script>
????
function?Obj(){this.value="對象!";}
????
var?value="global?變量";
????
function?Fun1(){alert(this.value);}

????window.Fun1();???
//global?變量
????Fun1.call(window);??//global?變量
????Fun1.call(document.getElementById('myText'));??//input?text
????Fun1.call(new?Obj());???//對象!
</script>
call函數和apply方法的第一個參數都是要傳入給當前對象的對象,及函數內部的this。后面的參數都是傳遞給當前對象的參數。
運行如下代碼:
<script>
???
var?func=new?function(){this.a="func"}
????
var?myfunc=function(x){
????????
var?a="myfunc";
????????alert(
this.a);
????????alert(x);
????}
????myfunc.call(func,
"var");
</script>
可見分別彈出了func和var。到這里就對call的每個參數的意義有所了解了。

對于apply和call兩者在作用上是相同的,但兩者在參數上有區別的。
對于第一個參數意義都一樣,但對第二個參數:
apply傳入的是一個參數數組,也就是將多個參數組合成為一個數組傳入,而call則作為call的參數傳入(從第二個參數開始)。

如 func.call(func1,var1,var2,var3)對應的apply寫法為:func.apply(func1,[var1,var2,var3])

同時使用apply的好處是可以直接將當前函數的arguments對象作為apply的第二個參數傳入 出處:(http://www.cnblogs.com/treasurelife/archive/2008/03/05/1092251.html)

轉載于:https://www.cnblogs.com/51xzdy/archive/2012/05/31/2529064.html

總結

以上是生活随笔為你收集整理的javascript:call和apply函数的用法(转载)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。