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

首頁 > 語言 > JavaScript > 正文

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

2024-05-06 15:32:09
字體:
來源:轉載
供稿:網友

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

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

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

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

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

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

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

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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 玉溪市| 阿巴嘎旗| 出国| 潼关县| 怀仁县| 历史| 日土县| 平阴县| 自贡市| 鸡东县| 望城县| 贺兰县| 彰化县| 高邑县| 北辰区| 隆安县| 化州市| 即墨市| 甘谷县| 咸宁市| 康平县| 易门县| 澄迈县| 唐海县| 新平| 萍乡市| 名山县| 建水县| 扎兰屯市| 揭阳市| 楚雄市| 襄樊市| 昭通市| 宜阳县| 同心县| 涟水县| 邛崃市| 客服| 固镇县| 廉江市| 赞皇县|