Object.prototype.valueOf()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2015ë 7ì.
valueOf() ë©ìëë í¹ì ê°ì²´ì ìì ê°ì ë°íí©ëë¤.
ìëí´ ë³´ê¸°
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
구문
object.valueOf();
ë°í ê°
ê°ì²´ì ìì ê°.
ì°¸ê³ :
(ë¨í) ëí기 ê¸°í¸ ë ê°ë valueOf ì ë¨ì¶ ííì¼ë¡ ì¬ì©ë©ëë¤. ì를 ë¤ë©´, ë¤ìê³¼ ê°ì ííì ë³´ì¸ì. +new Number(). ë¨í ëí기 ì¬ì©í기.ë 참조 íì¸ì.
ì¤ëª
JavaScriptë ê°ì²´ë¥¼ ìì ê°ì¼ë¡ ë³íí ë valueOf ë©ìë를 í¸ì¶í©ëë¤. ë³´íµ ìì ê°ì íìë¡ í ë ììì ì¬ì©íë¯ë¡ ì§ì í¸ì¶í´ì¼ íë ê²½ì°ë ë§¤ì° ëë
ëë¤.
기본ì ì¼ë¡ Objectì 모ë íì ê°ì²´ë valueOf를 ììë°ìµëë¤. ë´ì¥ë íµì¬ ê°ì²´ë 모ë valueOf를 ì¬ì ìí´ ì í©í ê°ì ë°íí©ëë¤. ì´ë¤ ê°ì²´ê° ìì ê°ì ê°ì§ê³ ìì§ ìë¤ë©´, valueOfë ê°ì²´ ì¤ì¤ë¡ë¥¼ ë°íí©ëë¤.
ì¬ë¬ë¶ì ì½ëìì valueOf를 í¸ì¶í´ ë´ì¥ ê°ì²´ë¥¼ ìì ê°ì¼ë¡ ë³íí ì ììµëë¤. ì¬ì©ì ì ì ê°ì²´ë¥¼ ë§ë¤ ë valueOf를 ì¬ì ìí´ Objectì ë©ìë ëì ë¤ë¥¸ íëì ë¶ì¬í ìë ììµëë¤.
ì¬ì©ì ì ì ê°ì²´ì valueOf ì¤ë²ë¼ì´ë©
기본 valueOf ë©ìë ëì ì¬ì©í í¨ì를 ìì±í ì ììµëë¤. ì´ ë í¨ìë 매ê°ë³ì를 ë°ì§ ììì¼ í©ëë¤.
MyNumberTypeì´ë¼ë ê°ì²´ ííê° ì¡´ì¬íê³ , ì´ ê°ì²´ì valueOf ë©ìë를 ë§ë¤ê³ ì¶ë¤ê³ ê°ì íê² ìµëë¤. ë¤ìì ì½ëë ê°ì²´ì valueOf ë©ìëì ì¬ì©ì ì ì í¨ì를 í ë¹í©ëë¤.
MyNumberType.prototype.valueOf = function () {
return customPrimitiveValue;
};
ìì ì½ëê° íì±íë ìíìì ì´ë¤ MyNumberType ê°ì²´ë¥¼ ìì ê°ì¼ë¡ ííí´ì¼ íë©´ JavaScriptê° ìëì¼ë¡ ì í¨ì를 ì¤íí©ëë¤.
ì´ ê°ì²´ì valueOf ë©ìëë ë³´íµ JavaScriptê° í¸ì¶íê² ì§ë§ ë¤ìì²ë¼ ì§ì í¸ì¶í ìë ììµëë¤.
myNumberType.valueOf();
ì°¸ê³ :
문ìì´ ë¬¸ë§¥ìì ê°ì²´-문ìì´ ë³íì toString() ë©ìë를 ì¬ì©íë©°, String ê°ì²´ì valueOf를 ì¬ì©í´ ìì 문ìì´ë¡ ë³ííë ê²ê³¼ë ë¤ë¦
ëë¤. 모ë ê°ì²´ë, ë¹ë¡ ê²°ê³¼ê° "[object type]" ë¿ì´ë¼ë 문ìì´ ë³í 기ë¥ì ê°ì§ê³ ììµëë¤. ê·¸ë¬ë ëë¤ìì ê°ì²´ë ì«ì, ë¶ë¦¬ì¸, í¨ì ë±ì¼ë¡ ë³íëì§ ììµëë¤.
ìì
>커ì¤í íì ì valueOf ì¬ì©í기
function MyNumberType(n) {
this.number = n;
}
MyNumberType.prototype.valueOf = function () {
return this.number;
};
var myObj = new MyNumberType(4);
myObj + 3; // 7
ë¨í ëí기 ì¬ì©í기
+"5"; // 5 (string to number)
+""; // 0 (string to number)
+"1 + 2"; // NaN (doesn't evaluate)
+new Date(); // same as (new Date()).getTime()
+"foo"; // NaN (string to number)
+{}; // NaN
+[]; // 0 (toString() returns an empty string list)
+[1]; // 1
+[1, 2]; // NaN
+new Set([1]); // NaN
+BigInt(1); // Uncaught TypeError: Cannot convert a BigInt value to a number
+undefined; // NaN
+null; // 0
+true; // 1
+false; // 0
ëª ì¸
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-object.prototype.valueof> |