Baseline Widely available
Function
å®ä¾ç apply()
æ¹æ³ä¼ä»¥ç»å®ç this
å¼åä½ä¸ºæ°ç»ï¼æç±»æ°ç»å¯¹è±¡ï¼æä¾ç arguments
è°ç¨è¯¥å½æ°ã
const numbers = [5, 6, 2, 3, 7];
const max = Math.max.apply(null, numbers);
console.log(max);
// Expected output: 7
const min = Math.min.apply(null, numbers);
console.log(min);
// Expected output: 2
è¯æ³
apply(thisArg)
apply(thisArg, argsArray)
åæ°
thisArg
è°ç¨ func
æ¶æä¾ç this
å¼ã妿彿°ä¸å¤äºä¸¥æ ¼æ¨¡å¼ï¼å null
å undefined
ä¼è¢«æ¿æ¢ä¸ºå
¨å±å¯¹è±¡ï¼åå§å¼ä¼è¢«è½¬æ¢ä¸ºå¯¹è±¡ã
argsArray
å¯é
ä¸ä¸ªç±»æ°ç»å¯¹è±¡ï¼ç¨äºæå®è°ç¨ func
æ¶çåæ°ï¼æè
妿ä¸éè¦å彿°æä¾åæ°ï¼å为 null
æ undefined
ã
ä½¿ç¨æå®ç this
å¼ååæ°è°ç¨å½æ°çç»æã
夿³¨ï¼ è¿ä¸ªå½æ°ä¸ call()
å ä¹å®å
¨ç¸åï¼åªæ¯å½æ°åæ°å¨ call()
ä¸é个ä½ä¸ºåè¡¨ä¼ éï¼èå¨ apply()
ä¸å®ä»¬ä¼ç»åå¨ä¸ä¸ªå¯¹è±¡ä¸ï¼é常æ¯ä¸ä¸ªæ°ç»ââä¾å¦ï¼func.call(this, "eat", "bananas")
ä¸ func.apply(this, ["eat", "bananas"])
ã
é常æ
åµä¸ï¼å¨è°ç¨å½æ°æ¶ï¼å½æ°å
é¨ç this
ç弿¯è®¿é®è¯¥å½æ°ç对象ãä½¿ç¨ apply()
ï¼ä½ å¯ä»¥å¨è°ç¨ç°æå½æ°æ¶å°ä»»æå¼åé
ç» this
ï¼èæ éå
å°å½æ°ä½ä¸ºå±æ§éå å°å¯¹è±¡ä¸ãè¿ä½¿å¾ä½ å¯ä»¥å°ä¸ä¸ªå¯¹è±¡çæ¹æ³ç¨ä½éç¨çå®ç¨å½æ°ã
ä½ è¿å¯ä»¥ä½¿ç¨ä»»ä½ç±»æ°ç»å¯¹è±¡ä½ä¸ºç¬¬äºä¸ªåæ°ãå®é
ä¸ï¼è¿æå³çå®éè¦å
·æ length
屿§ï¼å¹¶ä¸æ´æ°ï¼âç´¢å¼âï¼å±æ§çèå´å¨ (0..length - 1)
ä¹é´ãä¾å¦ï¼ä½ å¯ä»¥ä½¿ç¨ä¸ä¸ª NodeList
ï¼æè
å { 'length': 2, '0': 'eat', '1': 'bananas' }
è¿æ ·çèªå®ä¹å¯¹è±¡ãä½ è¿å¯ä»¥ä½¿ç¨ arguments
ï¼ä¾å¦ï¼
function wrapper() {
return anotherFn.apply(null, arguments);
}
使ç¨å©ä½åæ°ååæ°çå±å¼è¯æ³ï¼å¯ä»¥éå为ï¼
function wrapper(...args) {
return anotherFn(...args);
}
ä¸è¬èè¨ï¼fn.apply(null, args)
çåäºä½¿ç¨åæ°å±å¼è¯æ³ç fn(...args)
ï¼åªæ¯å¨åè
çæ
åµä¸ï¼args
æææ¯ç±»æ°ç»å¯¹è±¡ï¼èå¨åè
çæ
åµä¸ï¼args
æææ¯å¯è¿ä»£å¯¹è±¡ã
è¦åï¼ ä¸è¦ä½¿ç¨ apply()
è¿è¡æé 彿°é¾å¼è°ç¨ï¼ä¾å¦ï¼å®ç°ç»§æ¿ï¼ãè¿ä¼å°æé 彿°ä½ä¸ºæ®é彿°è°ç¨ï¼è¿æå³ç new.target
æ¯ undefined
ï¼ä»èç±»ä¼æåºé误ï¼å 为å®ä»¬ä¸è½å¨æ²¡æ new
çæ
åµä¸è°ç¨ã请æ¹ç¨ Reflect.construct()
æ extends
ã
ä½ å¯ä»¥ä½¿ç¨ Array.prototype.push()
æ¹æ³å°å
ç´ è¿½å å°æ°ç»ä¸ãå 为 push()
æ¥åå¯åæ°éçåæ°ï¼æä»¥ä½ ä¹å¯ä»¥ä¸æ¬¡æ§æ·»å å¤ä¸ªå
ç´ ã使¯ï¼å¦æä½ å°ä¸ä¸ªæ°ç»ä¼ éç» push()
ï¼å®å®é
ä¸ä¼å°è¯¥æ°ç»ä½ä¸ºå个å
ç´ æ·»å ï¼è䏿¯é个添å å
ç´ ï¼å¯¼è´æç»å¾å°ä¸ä¸ªæ°ç»å
åµçæ°ç»ãå¦ä¸æ¹é¢ï¼Array.prototype.concat()
å¨è¿ç§æ
åµä¸å
·æææçè¡ä¸ºï¼ä½å®ä¸ä¼å°å
ç´ è¿½å å°å·²ææ°ç»ä¸ï¼èæ¯å建并è¿åä¸ä¸ªæ°æ°ç»ã
å¨è¿ç§æ
åµä¸ï¼ä½ å¯ä»¥ä½¿ç¨ apply
éå¼å°å°ä¸ä¸ªæ°ç»ä½ä¸ºä¸ç³»ååæ°å±å¼ã
const array = ["a", "b"];
const elements = [0, 1, 2];
array.push.apply(array, elements);
console.info(array); // ["a", "b", 0, 1, 2]
使ç¨å±å¼è¯æ³å¯ä»¥è¾¾å°ç¸åçææã
const array = ["a", "b"];
const elements = [0, 1, 2];
array.push(...elements);
console.info(array); // ["a", "b", 0, 1, 2]
ä½¿ç¨ apply() åå
ç½®å½æ°
å·§å¦å°ä½¿ç¨ apply()
å¯ä»¥è®©ä½ å¨æäºæ
åµä¸ä½¿ç¨å
ç½®å½æ°æ¥å®æä¸äºä»»å¡ï¼èè¿äºä»»å¡é常éè¦æå¨éåéåï¼æä½¿ç¨å±å¼è¯æ³ï¼ã
ä¾å¦ï¼æä»¬å¯ä»¥ä½¿ç¨ Math.max()
å Math.min()
æ¥æ¾åºæ°ç»ä¸çæå¤§å¼åæå°å¼ã
// æ°ç»ä¸çæå°/æå¤§å¼
const numbers = [5, 6, 2, 3, 7];
// ç¨ apply è°ç¨ Math.min/Math.max
let max = Math.max.apply(null, numbers);
// è¿çä»·äº Math.max(numbers[0], â¦) æ Math.max(5, 6, â¦)
let min = Math.min.apply(null, numbers);
// ä¸åºäºç®å循ç¯çç®æ³ç¸æ¯
max = -Infinity;
min = +Infinity;
for (let i = 0; i < numbers.length; i++) {
if (numbers[i] > max) {
max = numbers[i];
}
if (numbers[i] < min) {
min = numbers[i];
}
}
ä½è¦æ³¨æï¼éè¿ä½¿ç¨ apply()
ï¼æå±å¼è¯æ³ï¼æ¥å¤çä»»æé¿çåæ°å表ï¼ä½ å¯è½ä¼è¶
è¿ JavaScript 弿çåæ°é¿åº¦éå¶ã
è°ç¨å
·æå¤ªå¤åæ°ç彿°ï¼å³è¶
è¿æ°ä¸ä¸ªåæ°ï¼çåææ¯æªæå®çï¼å¹¶ä¸å¨ä¸åç弿ä¸ä¼ææä¸åãï¼JavaScriptCore 弿å°åæ°éå¶ç¡¬ç¼ç 为 65536ãï¼å¤§å¤æ°å¼æä¼æåºå¼å¸¸ï¼ä½å¹¶æ²¡æè§èè¦æ±é»æ¢å
¶ä»è¡ä¸ºï¼ä¾å¦ä»»æéå¶åºç¨å½æ°å®é
æ¥æ¶çåæ°æ°éã为äºè¯´æåä¸ç§æ
åµï¼åè®¾è¿æ ·ç弿éå¶ä¸ºåä¸ªåæ°ï¼å®é
éå¶å½ç¶è¦é«å¾å¤ï¼ï¼é£ä¹å¨ä¸é¢ç示ä¾ä¸ï¼ä¼ éç» apply
çåæ°å°å为 5, 6, 2, 3
ï¼è䏿¯å®æ´çæ°ç»ã
å¦æä½ ç弿°ç»å¯è½ä¼å¢é¿å°æ°ä¸ä¸ªï¼å¯ä»¥ä½¿ç¨æ··åçç¥ï¼å°æ°ç»ççæ®µåæ¹éè¿ apply
è°ç¨å½æ°ï¼
function minOfArray(arr) {
let min = Infinity;
const QUANTUM = 32768;
for (let i = 0; i < arr.length; i += QUANTUM) {
const submin = Math.min.apply(
null,
arr.slice(i, Math.min(i + QUANTUM, arr.length)),
);
min = Math.min(submin, min);
}
return min;
}
const min = minOfArray([5, 6, 2, 3, 7]);
è§è æµè§å¨å
¼å®¹æ§ åè§
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4