Object.getOwnPropertyDescriptors()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2017ë 4ì.
Object.getOwnPropertyDescriptors() ë©ìëë 주ì´ì§ ê°ì²´ì 모ë ìì±ë¤ì ì¤ëª
ì(descriptor)ë¤ì ë°íí©ëë¤.
ìëí´ ë³´ê¸°
const object1 = {
property1: 42,
};
const descriptors1 = Object.getOwnPropertyDescriptors(object1);
console.log(descriptors1.property1.writable);
// Expected output: true
console.log(descriptors1.property1.value);
// Expected output: 42
구문
Object.getOwnPropertyDescriptors(obj);
매ê°ë³ì
obj-
ê°ì§ê³ ìë 모ë ìì±ë¤ì ì¤ëª ì를 ë°íë°ê³ ì¶ì ê°ì²´
ë°í ê°
ê°ì²´ì 모ë ìì±ì ì¤ëª ì를 ê°ì§ë ê°ì²´ë¥¼ ë°íí©ëë¤. 매ê°ë³ì ê°ì²´ì ìì±ì´ ìë¤ë©´, ë¹ ê°ì²´ê° ë°íë©ëë¤.
ì¤ëª
ì´ ë©ìë를 ì¬ì©íë©´, ê°ì²´ì 모ë ìì±ë¤ì ëí ì¤ëª
ì를 ì ííê² íì¸í ì ììµëë¤.
JavaScriptì ìì±ì 문ìì´ë¡ë ì´ë¦ ëë ì¬ë³¼, ê·¸ë¦¬ê³ ìì± ì¤ëª
ìë¡ ì´ë£¨ì´ì ¸ ììµëë¤.
ìì± ì¤ëª
ì ì¢
ë¥ì í¹ì±ì ëí ìì¸í ì ë³´ë Object.defineProperty()ì ììµëë¤..
ìì± ì¤ëª ì ë ë¤ìê³¼ ê°ì í¹ì§ë¤ì ê°ì§ ë ì½ëì ëë¤.
value-
ìì±ê³¼ ê´ë ¨ë ê°ì ëë¤. (ë°ì´í° ì¤ëª ìë§ í´ë¹ë¨)
writable-
ì°¸(true)ì¸ ê²½ì°, ìì±ê³¼ ê´ë ¨ë ê°ì´ ë³ê²½ë ì ìë ìíì ëë¤. (ë°ì´í° ì¤ëª ìë§ í´ë¹ë¨) get-
ìì±ì ëí getter ìí ì íë í¨ìê±°ë, getterê° ì ìëì§ ìì ê²½ì°ìë
undefinedì ëë¤. (ì ê·¼ì ì¤ëª ìë§ í´ë¹ë¨) set-
ìì±ì ëí setter ìí ì íë í¨ìê±°ë, setter ì ìëì§ ìì ê²½ì°ìë
undefinedì ëë¤. (ì ê·¼ì ì¤ëª ìë§ í´ë¹ë¨) configurable-
ì°¸(true)ì¸ ê²½ì°, ê°ì²´ë¡ ë¶í° ìì± ì¤ëª ìê° ë³ê²½ ë° ìì ë ì ìë ìíì ëë¤. enumerable-
trueì¸ ê²½ì°, ì´ê±° ê°ë¥í ìíì ìì±ì ëë¤.
ìì
>ìì ë³µì¬í기
Object.assign() ë©ìëë ì본 ê°ì²´ìì 목í ê°ì²´ë¡ ì´ê±° ê°ë¥í ìì±ê³¼ ê°ì²´ì ìì±ë¤ë§ ë³µì¬íë ë°ë©´,
ì´ ë©ìëì Object.create() 를 ì¬ì©íë©´ ì´ë ë ê°ì²´ë¥¼ ìì ë³µì¬ì ì¬ì©í ì ììµëë¤.
Object.create(
Object.getPrototypeOf(obj),
Object.getOwnPropertyDescriptors(obj),
);
ìë¸í´ëì¤ ë§ë¤ê¸°
ìë¸í´ëì¤ë¥¼ ë§ëë ì¼ë°ì ì¸ ë°©ë²ì ìë¸í´ëì¤ë¥¼ ì ìíê³ , íë¡í íì ì ìí¼ í´ëì¤ì ì¸ì¤í´ì¤ë¡ ì¤ì í ë¤ì, ê·¸ ì¸ì¤í´ì¤ì ìì±ì ì ìíë ê²ì ëë¤. ì´ ë°©ë²ì ê²í°ì ì¸í°ì ê²½ì° êµì¥í ë¶í¸í©ëë¤. ëì , ë¤ì ì½ë를 ì¬ì©íì¬ íë¡í íì ì ì¤ì í ì ììµëë¤.
function superclass() {}
superclass.prototype = {
// ì¬ê¸°ì ìí¼ í´ëì¤ì ìì±ì, 매ìë, ìì±ì ì ìí©ëë¤.
};
function subclass() {}
subclass.prototype = Object.create(superclass.prototype, {
// ì¬ê¸°ì ìë¸í´ëì¤ì ìì±ì, 매ìë, ìì±ì ì ìí©ëë¤.
});
ëª ì¸
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-object.getownpropertydescriptors> |
ë¸ë¼ì°ì í¸íì±
ê°ì´ 보기
Object.getOwnPropertyDescriptorsì í´ë¦¬íì ë¤ììì íì¸ í ì ììµëë¤.core-jsObject.getOwnPropertyDescriptor()Object.defineProperty()- Polyfill