91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript中call和apply方法的區別實例分析

發布時間:2020-08-23 03:12:17 來源:腳本之家 閱讀:126 作者:咕咚蘿卜 欄目:web開發

本文實例分析了JavaScript中call和apply方法的區別。分享給大家供大家參考,具體如下:

這兩個方法不經常用,但是在某些特殊場合中是非常有用的,下面主要說下它們的區別:

1、首先,JavaScript是一門面向對象的語言,也就是說它有this的概念。而且JavaScript是一門動態類型語言,為什么說它是動態類型語言呢?因為JavaScript在編譯時沒有類型檢查的過程,不會去檢查創建的對象類型,也不會去檢查傳遞的參數類型,所以它的變量類型在運行期間是可以改變的。

2、要知道callapply都是為了改變某個函數運行時的上下文(context)而存在的,也就是為了改變函數,也可以說是對象(函數本身就是對象)內部this的指向而存在的。

3、二者區別為:傳參數的方式不一樣,如下:

func.call(this, arg1, arg2);
func.apply(this, [arg1, arg2]);

上面也很清楚了,call傳參數時,明確知道時幾個參數或者參數較少時,比如arg1arg2,挨個傳就是了;

apply第二個參數必須為一個數組,即將參數放進數組中即可。

4、實例

(function(){
 Array.prototype.push.call(arguments, 4);//arguments借用Array.prototype.push方法
 console.log( arguments ); //輸出: [1, 2, 3, 4]
})(1, 2, 3);
var currying = function(fn){
  var args = [];
  return function(){
    if( arguments.length === 0){
      return fn.apply( this, args);
    }
    else{
      [].push.apply( args, arguments);
      return arguments.callee; //callee已棄用
    }
  }
};
var cost = (function(){
 var money = 0;
 return function(0{
   for(var i = 0,l - arguments.length;i<l;i++){
     money += arguments[i];
   }
   return money;
 }
})();

調用:

var cost_ = currying(cost); //將cost轉化成curring函數
cost_(1); cost_(2); alert(cost_()); //輸出:3

解釋:通過currying(柯里化)的轉化,在cost_中傳入參數時,未能得到值,而是將值存儲起來,直到當無參數傳入時,輸出結果。

更多關于JavaScript相關內容可查看本站專題:《JavaScript常用函數技巧匯總》、《javascript面向對象入門教程》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》及《JavaScript數學運算用法總結》

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

华阴市| 邢台县| 尖扎县| 文昌市| 新蔡县| 牙克石市| 峨边| 内黄县| 琼中| 佛山市| 西青区| 十堰市| 新营市| 汤阴县| 丽江市| 怀来县| 大荔县| 房山区| 上虞市| 寻乌县| 秭归县| 方城县| 分宜县| 德安县| 通榆县| 东莞市| 岳阳市| 砀山县| 静安区| 清水河县| 调兵山市| 桓仁| 班戈县| 江津市| 濮阳县| 桐城市| 大兴区| 德安县| 正定县| 枣阳市| 比如县|