Baseline Widely available
apply()
ã¡ã½ããã¯ã this
å¤ãæå®ãã¦é¢æ°ãå¼ã³åºãã arguments
ã¯é
å (ã¾ãã¯é
å風ãªãã¸ã§ã¯ã) ã¨ãã¦æä¾ãã¾ãã
const numbers = [5, 6, 2, 3, 7];
const max = Math.max.apply(null, numbers);
console.log(max);
// æå¾
ãããåºå: 7
const min = Math.min.apply(null, numbers);
console.log(min);
// æå¾
ãããåºå: 2
æ§æ
apply(thisArg)
apply(thisArg, argsArray)
弿°
thisArg
this
ã®å¤ã§ã func
ã®å¼ã³åºãã«æä¾ããã¾ãããã®é¢æ°ã峿 ¼ã¢ã¼ãã§ãªãå ´åã¯ã null
ããã³ undefined
ã¯ã°ãã¼ãã«ãªãã¸ã§ã¯ãã«ç½®ãæããããããªããã£ãå¤ã¯ãªãã¸ã§ã¯ãã«å¤æããã¾ãã
argsArray
çç¥å¯
é
å風ã®ãªãã¸ã§ã¯ãã§ããã func
颿°ãå¼ã¶ãã¨ã«ãªã弿°ãåæãããã®ã§ãã颿°ã«å¼æ°ã渡ãããªãå ´å㯠null
ã¾ã㯠undefined
ã¨ãªãã¾ãã
æå®ãã this
ã¨å¼æ°ã§é¢æ°ãå¼ã³åºããçµæãè¿ãã¾ãã
ã¡ã¢: ãã®é¢æ°ã¯ã»ã¼ call()
ã¨åçã§ããã call()
ã§ã¯é¢æ°ã®å¼æ°ããªã¹ãã¨ãã¦åå¥ã«æ¸¡ãããã®ã«å¯¾ãã apply()
ã§ã¯ 1 ã¤ã®ãªãã¸ã§ã¯ããé常ã¯é
åã«ã¾ã¨ãããã¾ããä¾ãã°ã func.call(this, "eat", "bananas")
㨠func.apply(this, ["eat", "bananas"])
ã®ããã«ãªãã¾ãã
é常ã颿°ãå¼ã³åºãå ´åã颿°å
ã® this
å¤ã¯ã颿°ãã¢ã¯ã»ã¹ããããªãã¸ã§ã¯ãã§ãã apply()
ã使ç¨ããã¨ãæ¢åã®é¢æ°ãå¼ã³åºãéã«ãæåã®ãªãã¸ã§ã¯ãã«ããããã£ã¨ãã¦é¢æ°ãé¢é£ä»ãããã¨ãªããä»»æã®å¤ã this
ã¨ãã¦å²ãå½ã¦ããã¨ãã§ãã¾ããããã«ããããããªãã¸ã§ã¯ãã®ã¡ã½ãããæ±ç¨ã¦ã¼ãã£ãªãã£é¢æ°ã¨ãã¦ä½¿ç¨ãããã¨ãã§ãã¾ãã
ã¾ããé
å風ãªãã¸ã§ã¯ãã§ããã°ãã©ã®ãããªãã®ã§ã第 2 弿°ã¨ãã¦ä½¿ç¨ãããã¨ãã§ãã¾ããå®éã«ã¯ã 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
ã¯ãåè
ã®å ´åã apply()
ã«ããé
å風ãªãã¸ã§ã¯ãã§ãããã¨ãæå¾
ãããå¾è
ã®å ´åãã¹ãã¬ããæ§æã«ããå復å¯è½ãªãã¸ã§ã¯ãã§ãããã¨ãæå¾
ããã¾ãã
è¦å: ã³ã³ã¹ãã©ã¯ã¿ã¼ãé£çµããï¼ä¾ãã°ãç¶æ¿ãå®è£
ããï¼ããã« 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];
// Math.min/Math.max 㨠apply ã使ã
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 ã§ããã¨ãã¼ãã³ã¼ãã£ã³ã°ããã¦ãã¾ãï¼ç°ãªãã¾ããã»ã¨ãã©ã®ã¨ã³ã¸ã³ã§ã¯ä¾å¤ãçºçãã¾ãããä»ã«ããé©ç¨ããã颿°ã«å®éã«æ¸¡ããã弿°ã®æ°å¤ãä»»æã«å¶éãããªã©ãç¹å®ã®åä½ã妨ãã仿§ã¯ããã¾ãããå¾è
ã«ã¤ãã¦è©³ãã解説ãã¾ãã¨ããã®ã¨ã³ã¸ã³ã®å¼æ°ã®ä¸éã 4 ã¤ã®å ´å (å®éã®ä¸éå¤ã¯å½ç¶ãã£ã¨ä¸ã§ã)ãä¸ã®ä¾ã§ã¯ãå®å
¨ãªé
åã§ãªã 5, 6, 2, 3
ã apply
ã¸æ¸¡ããããã®ãããªåä½ããã¾ãã
ããå®è£ ãã¦ããã³ã¼ãã§å©ç¨ããé åã®å¤æ°ã®æ°ãæ°ä¸ãè¶ ããããªã¨ãã¯ã以ä¸ã«ç¤ºãããã«ä¸åº¦ã« 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