Baseline Widely available
valueOf()
㯠Object
ã¤ã³ã¹ã¿ã³ã¹ã®ã¡ã½ããã§ã this
å¤ããªãã¸ã§ã¯ãã«å¤æãã¾ãããã®ã¡ã½ããã¯ãæ´¾çãªãã¸ã§ã¯ãã§ã¯ç¬èªã®å夿ãã¸ãã¯ã®ããã«ãªã¼ãã¼ã©ã¤ããããããã®ãã®ã§ãã
function MyNumberType(n) {
this.number = n;
}
MyNumberType.prototype.valueOf = function () {
return this.number;
};
const object1 = new MyNumberType(4);
console.log(object1 + 3);
// Expected output: 7
æ§æ 弿°
ãªãã
è¿å¤æå®ããããªãã¸ã§ã¯ãã®ããªããã£ãå¤ãè¿ãã¾ãã
ã¡ã¢: å夿ã®éã« valueOf
ãæçã§ããããã«ã¯ãããªããã£ããè¿ãå¿
è¦ãããã¾ãããã¹ã¦ã®ããªããã£ãåã¯èªåèªèº«ã§ valueOf()
ã¡ã½ãããæã£ã¦ããã®ã§ãä¸è¬çã« aPrimitiveValue.valueOf()
ãå¼ã³åºãã¦ã Object.prototype.valueOf()
ã¯å¼ã³åºããã¾ããã
JavaScript 㯠valueOf
ã¡ã½ãããããªãã¸ã§ã¯ããããªããã£ããªå¤ã«å¤æããã¨ãã«å¼ã³åºãã¾ããããªããèªåã§ valueOf
ã¡ã½ãããå®è¡ããå¿
è¦ã¯ã»ã¨ãã©ãªããããªããã£ããªå¤ãæå¾
ãããå ´é¢ã«ãªãã¸ã§ã¯ããåºããããã¨ã JavaScript ãèªåçã«å®è¡ãã¾ãã
ãã®ã¡ã½ããã¯æ°å¤å¤æã¨ããªããã£ã夿ã§åªå
çã«å¼ã³åºããã¾ãããæåå夿ã§ã¯ toString()
ãåªå
çã«å¼ã³åºããã toString()
ã¯æååå¤ãè¿ãå¯è½æ§ãã¨ã¦ãé«ãã®ã§ï¼Object.prototype.toString()
ã®åºæ¬å®è£
ã§ãï¼ããã®å ´å valueOf()
ã¯é常å¼ã³åºããã¾ããã
Object.prototype
ç¶æ¿ãããã¹ã¦ã®ãªãã¸ã§ã¯ãï¼ã¤ã¾ãã null
ãããã¿ã¤ããªãã¸ã§ã¯ããé¤ããã¹ã¦ã®ãªãã¸ã§ã¯ãï¼ã¯ toString()
ã¡ã½ãããç¶æ¿ãã¦ãã¾ãã Object.prototype.valueOf()
ã®åºæ¬å®è£
ã¯ãæå³çã«æçãªãã®ã«ãªã£ã¦ãã¾ããããªãã¸ã§ã¯ããè¿ããã¨ã§ããã®è¿å¤ã¯ã©ã®ãããªããªããã£ã夿ã¢ã«ã´ãªãºã ã§ã使ç¨ãããã¨ã¯ããã¾ãããå¤ãã®çµã¿è¾¼ã¿ãªãã¸ã§ã¯ãã¯ãé©åãªããªããã£ãå¤ãè¿ãããã«ãã®ã¡ã½ããã䏿¸ããã¾ããç¬èªãªãã¸ã§ã¯ãã使ããå ´åã¯ã valueOf()
ã䏿¸ããã¦ç¬èªã¡ã½ãããå¼ã³åºããã¨ã§ãç¬èªãªãã¸ã§ã¯ããããªããã£ãå¤ã«å¤æãããã¨ãã§ãã¾ããä¸è¬çã«ã valueOf()
ã¯ãªãã¸ã§ã¯ãã«ã¨ã£ã¦æãæå³ã®ããå¤ãè¿ãããã«ä½¿ç¨ãã¾ãã toString()
ã¨ã¯ç°ãªããæååã§ããå¿
è¦ã¯ããã¾ãããã¾ãã@@toPrimitive
ã¡ã½ããã追å ãããã¨ãã§ãã¾ãããã®ã¡ã½ããã§ã¯ã夿å¦çãããã«å¶å¾¡ãããã¨ãã§ããå夿ã®éã«ã¯å¸¸ã« valueOf
ã toString
ãããåªå
ããã¾ãã
åºæ¬ã® valueOf()
ã¡ã½ããã¯ã this
ã®å¤èªèº«ãè¿ãã¾ãããã¾ã ãªãã¸ã§ã¯ãã«å¤æããã¦ããªãå ´åã¯ãªãã¸ã§ã¯ãã«å¤æããã¾ãããã®ããããã®è¿ãå¤ã¯ã©ã®ãããªããªããã£ã夿ã¢ã«ã´ãªãºã ã§ã使ç¨ããããã¨ã¯ããã¾ããã
const obj = { foo: 1 };
console.log(obj.valueOf() === obj); // true
console.log(Object.prototype.valueOf.call("primitive"));
// [String: 'primitive'] (a wrapper object)
ç¬èªãªãã¸ã§ã¯ãã«ããã valueOf ã®ãªã¼ãã¼ã©ã¤ã
æ¢å®ã® valueOf
ã¡ã½ããã®ä»£ããã«å¼ã³åºããã颿°ã使ãããã¨ãã§ãã¾ããå夿ä¸ã«å¼ã³åºãããã¨ãã«ã¯å¼æ°ã渡ãããªãã®ã§ã颿°ã¯å¼æ°ã¨ãã¦åãã¹ãã§ã¯ããã¾ããã
ä¾ãã°ãç¬èªã¯ã©ã¹ Box
ã« valueOf
ã¡ã½ããã追å ããã«ã¯æ¬¡ã®ããã«ãã¾ãã
class Box {
#value;
constructor(value) {
this.#value = value;
}
valueOf() {
return this.#value;
}
}
å
ã®ã³ã¼ãã«ããã¦ã Box
åã®ãªãã¸ã§ã¯ããããªããã£ãå¤ï¼ç¹ã«æååã§ã¯ãªãï¼ã¨ãã¦è¡¨ç¾ãããã³ã³ããã¹ãã§ä½¿ç¨ãããã¨ãã JavaScript ã§èªåçã«å
ã®ã³ã¼ãã§å®ç¾©ããã¦ãã颿°ãå¼ã³åºããã¾ãã
const box = new Box(123);
console.log(box + 456); // 579
console.log(box == 123); // true
ãªãã¸ã§ã¯ãã® valueOf
ã¡ã½ããã¯é常 JavaScript ã«ãã£ã¦å¼ã³åºããã¾ãããå¾ããã¨ä»¥ä¸ã§èªåã§å¼ã³åºããã¨ãã§ãã¾ãã
åé
ãã©ã¹ã¯ããªãã©ã³ãã«å¯¾ãã¦æ°å¤å¤æãè¡ãã¾ããããã¯ã @@toPrimitive
ãæããªãã»ã¨ãã©ã®ãªãã¸ã§ã¯ãã§ã¯ã valueOf()
ãå¼ã³åºããã¨ãæå³ãã¦ãã¾ãããããããªãã¸ã§ã¯ãã«ç¬èªã® valueOf()
ã¡ã½ããããªãå ´åãåºæ¬å®è£
ã§ã¯ valueOf()
ã¯ç¡è¦ããã代ããã« toString()
ã®è¿å¤ã使ç¨ããã¾ãã
+new Date(); // ç¾å¨ã®ã¿ã¤ã ã¹ã¿ã³ãã new Date().getTime() ã¨åã
+{}; // NaN ï¼toString() 㯠"[object Object]" ãè¿ãï¼
+[]; // 0 ï¼toString() ã¯ç©ºã®æååãªã¹ããè¿ãï¼
+[1]; // 1 ï¼toString() 㯠"1" ãè¿ãï¼
+[1, 2]; // NaN ï¼toString() 㯠"1,2" ãè¿ãï¼
+new Set([1]); // NaN ï¼toString() 㯠"[object Set]" ãè¿ãï¼
+{ valueOf: () => 42 }; // 42
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
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