中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

JS中使用apply方法通過不同數量的參數調用函數的方法
來源:易賢網 閱讀:1239 次 日期:2016-06-17 15:18:16
溫馨提示:易賢網小編為您整理了“JS中使用apply方法通過不同數量的參數調用函數的方法”,方便廣大網友查閱!

這篇文章主要介紹了JS中使用apply方法通過不同數量的參數調用函數的方法的相關資料,需要的朋友可以參考下

apply()方法定義

函數的apply()方法和call方法作用相同,區別在于接收的參數的方式不同。

apply()方法接收兩個參數,一個是對象,一個是參數數組。

apply()作用

1、用于延長函數的作用域

示例:

var color='red';

var o={color:'blue'};

function sayColor(){

console.log(this.color);

}

sayColor();//"red"

sayColor.apply(o);//"blue"

這里通過apply()方法把函數動態綁定到了對象o上了,這時this指向o對象,得到結果"blue"。

2、對象不需要與方法有任何耦合關系

下面舉個耦合的例子,看如何通過apply來解決這種耦合。

var color='red';

var o={color:'blue'};

function sayColor(){

console.log(this.color);

}

o.sayColor=sayColor;

o.sayColor();//"blue"

這里先將函數放到了對象o中,這里對象和方法就緊耦合到一起了,方法的調用必須通過對象o。

沒有使用apply()和call()方法那樣靈活。

重構上面代碼,得到前例中的代碼。

var color='red';

var o={color:'blue'};

function sayColor(){

console.log(this.color);

}

sayColor();//"red"

sayColor.apply(o);//"blue"

這里對象并沒有綁定任何方法,只是在需要使用的時候,利用函數的apply或call方法來動態綁定。

對象和方法之間沒有耦合在一起。這里還可以通過ES5提供的bind()方法來完成

3、實現可變參數函數傳參

下面一個計算任意數量數字平均值的函數

average(,,);

average();

average(,,,,,,,,);

average(,,,,,,,,,);

average函數是一個稱為可變參數或可變元函數(函數的元數是指其期望的參數個數)的例子。

當然這個函數也可以寫成一個接收數組的形式。

averageOfArray([,,]);

averageOfArray([]);

averageOfArray([,,,,,,,,]);

averageOfArray([,,,,,,,,,]);

使用可變參數的函數更簡潔、優雅。可變參數函數具有便捷的語法,至少讓調用者預先明確地知道提供了多少個參數。

如果我有這樣一個數組

var scores=getAllScores();

如何使用average函數計算平均值呢?

1.可變參數函數版本。

這時就可以和apply()方法配合使用,這里因為函數并沒用引用this變量,因此第一個參數我們傳入一個null。代碼如下:

var scores=getAllScores();

average.apply(null,scores);

2.直接參數為數組的形式

這里可以直接傳入數組參數。

var scores=getAllScores();

averageOfArray(scores);

以上兩種形式,個人覺得都是可以,反而第二種更簡單。多知道一種方法,對于遇到別人寫的函數時,可以輕松應對,不需要重構代碼。這個好處反而更多。

4、實現可變參數方法的傳值

示例:buffer對象包含一個可變參數的append方法,該方法添加元素到函數內部的state數組中。

var buffer={

state:[],

append:function(){

for(var i=,n=arguments.length;i<n;i++){

this.state.push(arguments[i]);

}

}

};

這時append方法可以接受任意多個參數。

buffer.append('Hello,');

buffer.append('firtName',' ','lastName','!');

buffer.append('newLine');

形式如

buffer.append(arg1,arg2,arg3,...)

借助apply方法的this參數,我們可以指定一個可計算的數組調用append方法

buffer.append.apply(buffer,getInputStrings());

注意:這里的buffer很重要,如果傳遞不同的對象,則append方法將嘗試修改該錯誤對象的state屬性。

提示

•使用apply方法指定一個可計算的參數數組來調用可變參數的函數

•使用apply方法的第一個參數給可變參數的方法提供一個接收者

附錄一

average函數

function average(){

var args=[].slice.call(arguments);

var sum=args.reduce(function(prev,cur){

return prev+cur;

});

return parseInt(sum/args.length,);

}

averageOfArray函數

function averageOfArray(arr){ 

var sum=arr.reduce(function(prev,cur){

return prev+cur;

});

return parseInt(sum/arr.length,);

}

ES5 bind()方法

這個方法創建一個函數的實例,其this值會被綁定到傳給bind()函數的值。

例如

var color='red';

var o={color:'blue'};

function sayColor(){

console.log(this.color);

}

var oSayColor=sayColor.bind(o);

oSayColor();//"blue"

兼容低版本,參考使用下面的版本 :

if (!Function.prototype.bind) {

Function.prototype.bind = function(oThis) {

if (typeof this !== 'function') {

// closest thing possible to the ECMAScript 

// internal IsCallable function

throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');

}

var aArgs = [].slice.call(arguments, ),

fToBind = this,

fNOP = function() {},

fBound = function() {

return fToBind.apply(this instanceof fNOP? this: oThis,

aArgs.concat(Array.prototype.slice.call(arguments)));

};

if (this.prototype) {

// Function.prototype doesn't have a prototype property

fNOP.prototype = this.prototype; 

}

fBound.prototype = new fNOP();

return fBound;

};

}

更多信息請查看網絡編程
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
亚洲午夜视频在线| 国产精品网站一区| 久久精品中文字幕一区二区三区| 国产精品免费看久久久香蕉| 国产精品乱人伦中文| 欧美日韩一级片在线观看| 欧美精品麻豆| 国产精品久久久久久久浪潮网站| 国产精品超碰97尤物18| 欧美午夜激情在线| 国产欧美日韩专区发布| 国产专区一区| 亚洲免费av观看| 亚洲宅男天堂在线观看无病毒| 亚洲视频成人| 欧美一区二区三区免费大片| 久久av在线看| 欧美老女人xx| 国产精品一区二区在线| 亚洲福利在线看| 午夜视频一区在线观看| 久久久久国产成人精品亚洲午夜| 欧美国产日韩二区| 国产精品久久福利| 狠狠色伊人亚洲综合成人| 一本一本a久久| 欧美日韩精品免费| 国产精品久久久久免费a∨大胸| 国产日韩精品视频一区| 亚洲精品免费网站| 久久精品一本久久99精品| 欧美日韩p片| 亚洲激情小视频| 免费观看一级特黄欧美大片| 欧美日韩一区二区在线观看| 亚洲国产婷婷综合在线精品 | 久久综合伊人77777麻豆| 欧美性理论片在线观看片免费| 精品不卡一区二区三区| 一区二区日本视频| 免费观看日韩| 在线播放一区| 久久成人精品| 国产精品大全| 亚洲一区二区免费| 欧美高清视频免费观看| 在线视频观看日韩| 亚洲一二三区视频在线观看| 欧美91大片| 亚洲欧洲另类| 欧美视频二区| 午夜在线播放视频欧美| 国产农村妇女毛片精品久久麻豆 | 激情偷拍久久| 亚洲视频一区二区| 国产精品久久久久久影视| 亚洲一区二区精品在线观看| 国产精品日日摸夜夜添夜夜av| 欧美亚洲视频在线看网址| 韩国一区二区在线观看| 欧美成人亚洲成人日韩成人| 亚洲伦理自拍| 国产欧美日本一区二区三区| 久久久久国产精品厨房| 亚洲黑丝在线| 国产精品久久久久久久久免费| 久久久久久亚洲精品中文字幕| 亚洲区第一页| 国产一区二区三区久久悠悠色av | 亚洲国产精品一区二区www在线| 欧美成人国产va精品日本一级| 99精品视频免费观看| 国产一区日韩欧美| 欧美性理论片在线观看片免费| 久久精品国产第一区二区三区| 亚洲精品日韩激情在线电影 | 欧美吻胸吃奶大尺度电影| 欧美与黑人午夜性猛交久久久| 亚洲激情在线播放| 黄色国产精品| 国产精品乱人伦中文| 欧美国产精品v| 你懂的亚洲视频| 久久久久国产免费免费| 亚洲欧美电影在线观看| 日韩一级不卡| 亚洲肉体裸体xxxx137| 红杏aⅴ成人免费视频| 国产日韩欧美综合精品| 国产精品美女www爽爽爽视频| 欧美日韩免费观看一区三区| 美女诱惑一区| 免费日韩av片| 欧美福利一区| 欧美紧缚bdsm在线视频| 欧美激情成人在线| 久久夜色精品亚洲噜噜国产mv| 久久天堂精品| 欧美成人午夜激情在线| 欧美电影美腿模特1979在线看| 欧美成人自拍| 国产精品扒开腿爽爽爽视频| 国产精品亚洲а∨天堂免在线| 国产欧美精品在线播放| 国精产品99永久一区一区| 一区在线影院| 日韩午夜电影在线观看| 亚洲淫性视频| 另类国产ts人妖高潮视频| 欧美精品一区在线观看| 国产精品美女久久久久久免费 | 欧美黄色aaaa| 国产精品久久久久久久7电影 | 99视频精品免费观看| 99精品黄色片免费大全| 亚洲欧美激情诱惑| 久久精品国产久精国产爱| 欧美黄色大片网站| 国产精品国产三级欧美二区| 黑人巨大精品欧美一区二区小视频 | 国产欧美日韩视频一区二区三区 | 久久久亚洲高清| 欧美日韩第一区| 国产一区二区三区在线观看视频 | 欧美在线影院在线视频| 欧美人妖在线观看| 国产一区二区三区av电影| 亚洲欧洲精品一区二区三区| 亚洲在线电影| 欧美日韩一区二区三区在线看| 国内外成人在线视频| 亚洲视频一二三| 欧美激情亚洲自拍| 在线成人av.com| 久久精品盗摄| 国产伦一区二区三区色一情| 日韩视频免费观看| 欧美日韩国产首页| 亚洲人被黑人高潮完整版| 女女同性精品视频| av不卡免费看| 欧美理论片在线观看| 激情av一区| 免费视频久久| 一本色道88久久加勒比精品| 欧美午夜精品理论片a级大开眼界| 亚洲美女中文字幕| 国产精品久久久久久久久婷婷| 亚洲——在线| 国产中文一区| 老司机免费视频一区二区| 亚洲丁香婷深爱综合| 欧美精品免费播放| 亚洲专区在线视频| 一区视频在线看| 欧美成人影音| 亚洲一区二区四区| 一区二区亚洲欧洲国产日韩| 欧美精品在线网站| 亚洲欧美日韩精品一区二区| 国产一区二区三区直播精品电影| 久久亚洲一区| 亚洲午夜电影网| 激情综合自拍| 国产精品地址| 欧美国产在线观看| 久久国产精品99国产精| 日韩网站在线| 激情综合电影网| 国产目拍亚洲精品99久久精品| 美国十次了思思久久精品导航| 亚洲一区视频在线| 在线观看av一区| 国产人久久人人人人爽| 欧美精品一区二区三区在线播放 | 欧美一区二视频在线免费观看| 亚洲大黄网站| 国产日韩一区二区三区在线| 欧美精品日韩精品| 久久精品一区二区三区中文字幕| 亚洲精品免费一二三区| 国产午夜精品视频| 欧美性开放视频| 欧美日韩国产一区二区三区| 久久一区二区三区国产精品| 欧美亚洲自偷自偷| 亚洲欧美久久久| 亚洲亚洲精品在线观看| 99re8这里有精品热视频免费| 激情综合电影网| 含羞草久久爱69一区| 国外成人免费视频| 国产九区一区在线| 在线视频精品一区| 99视频一区二区| 亚洲欧美成人在线| 久久激情视频| 久久综合久色欧美综合狠狠| 蜜月aⅴ免费一区二区三区| 奶水喷射视频一区|