亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JS在循環內應用函數

JS在循環內應用函數

HUWWW 2023-03-18 16:48:11
下面的代碼是 vanila JS 等價于 jQuery 的每個方法NodeList.prototype.each = function(fn) {  for (var i = 0; i < this.length; i++) {    fn.apply(this[i], [i, this[i]]);  }  return this;};有人可以解釋為什么使用參數索引“i”代碼調用函數:fn.apply(this[i], [i, this[i]]);
查看完整描述

1 回答

?
守候你守候我

TA貢獻1802條經驗 獲得超10個贊

func.apply(thisArg, [argsArray])?:

thisArg:為調用func提供的this的值。

請注意,這可能不是該方法看到的實際值:如果該方法是非嚴格模式代碼中的函數,則 null 和 undefined 將被替換為全局對象,原始值將被裝箱。此參數是必需的。

argsArray:可選 一個類似數組的對象,指定應調用 func 的參數,如果不應向函數提供參數,則指定 null 或 undefined。

就你而言:

this[i] 是屬于 NodeList 的當前元素。

每個都是添加到 NodeList 的新函數您可以稍后使用,例如.querySelectorAll('p')

這是一個例子:

NodeList.prototype.each = function(fn) {

? ? for (var i = 0; i < this.length; i++) {

? ? ? ? console.log('this[' + i + ']=' + this[i].outerHTML);

? ? ? ? fn.apply(this[i], [i, this[i]]);

? ? }

? ? return this;

};


document.querySelectorAll('p').each(function(idx, ele) {

? ? console.log('each call: idx=' + idx + ' and ele=' + ele.outerHTML);

})

<p>1</p>

<p>2</p>

<p>3</p>


查看完整回答
反對 回復 2023-03-18
  • 1 回答
  • 0 關注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號