内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

JavaScript中call和apply方法的區(qū)別實(shí)例分析

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

成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供塔城企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、網(wǎng)站制作、H5場(chǎng)景定制、小程序制作等業(yè)務(wù)。10年已為塔城眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。

這兩個(gè)方法不經(jīng)常用,但是在某些特殊場(chǎng)合中是非常有用的,下面主要說下它們的區(qū)別:

1、首先,JavaScript是一門面向?qū)ο蟮恼Z言,也就是說它有this的概念。而且JavaScript是一門動(dòng)態(tài)類型語言,為什么說它是動(dòng)態(tài)類型語言呢?因?yàn)镴avaScript在編譯時(shí)沒有類型檢查的過程,不會(huì)去檢查創(chuàng)建的對(duì)象類型,也不會(huì)去檢查傳遞的參數(shù)類型,所以它的變量類型在運(yùn)行期間是可以改變的。

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

3、二者區(qū)別為:傳參數(shù)的方式不一樣,如下:

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

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

apply第二個(gè)參數(shù)必須為一個(gè)數(shù)組,即將參數(shù)放進(jìn)數(shù)組中即可。

4、實(shí)例

(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;
 }
})();

調(diào)用:

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

解釋:通過currying(柯里化)的轉(zhuǎn)化,在cost_中傳入?yún)?shù)時(shí),未能得到值,而是將值存儲(chǔ)起來,直到當(dāng)無參數(shù)傳入時(shí),輸出結(jié)果。

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

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

本文題目:JavaScript中call和apply方法的區(qū)別實(shí)例分析
轉(zhuǎn)載源于:http://www.rwnh.cn/article6/gjhpig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、建站公司ChatGPT、網(wǎng)站策劃網(wǎng)站設(shè)計(jì)、全網(wǎng)營(yíng)銷推廣

廣告

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

h5響應(yīng)式網(wǎng)站建設(shè)
连平县| 青铜峡市| 紫阳县| 疏勒县| 莫力| 泸西县| 讷河市| 顺昌县| 蓝山县| 边坝县| 万全县| 雅安市| 旺苍县| 湘潭市| 雷波县| 伊川县| 家居| 西贡区| 靖安县| 通化市| 旌德县| 金塔县| 濮阳县| 娱乐| 武陟县| 北海市| 光山县| 潜江市| 沧源| 安平县| 鄂温| 通海县| 北票市| 贞丰县| 申扎县| 布拖县| 兰溪市| 乌苏市| 曲麻莱县| 衡水市| 十堰市|