Object.hasOwn()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since 2022ë 3ì.
ëª
ìë ê°ì²´ì ìì²´ ìì±ì¼ë¡ ì§ì ë ìì±ì´ ìë ê²½ì° Object.hasOwn() ì ì ë©ìëë true를 ë°íí©ëë¤. ìì±ì´ ììëìê±°ë ì¡´ì¬íì§ ìì¼ë©´ ì´ ë©ìëë false를 ë°íí©ëë¤.
ì°¸ê³ :
Object.hasOwn()ì Object.prototype.hasOwnProperty()를 ëì²´í기 ìí ê²ì
ëë¤.
ìëí´ ë³´ê¸°
const object1 = {
prop: "exists",
};
console.log(Object.hasOwn(object1, "prop"));
// ìì ì¶ë ¥ ê°: true
console.log(Object.hasOwn(object1, "toString"));
// ìì ì¶ë ¥ ê°: false
console.log(Object.hasOwn(object1, "undeclaredPropertyValue"));
// ìì ì¶ë ¥ ê°: false
구문
Object.hasOwn(obj, prop)
매ê°ë³ì
ë°í ê°
ì§ì ë ê°ì²´ê° ì§ì ëª
ìë ìì±ì ì ìíë¤ë©´ true. ê·¸ë ì§ ìì¼ë©´ false
ì¤ëª
ëª
ìë ìì±ì´ ê°ì´ null í¹ì undefinedì¼ ê²½ì°ì¼ì§ë¼ë ê°ì²´ì ì§ì ì ì¸ ìì±ì¸ ê²½ì° Object.hasOwn() ë©ìëë true를 ë°íí©ëë¤. ìì±ì´ ììëìê±°ë ì í ì ì¸ëì§ ìì ê²½ì° ì´ ë©ìëë false를 ë°íí©ëë¤. in ì°ì°ììë ë¬ë¦¬, ì´ ë©ìëë ê°ì²´ì íë¡í íì
ì²´ì¸ìì ì§ì ë ìì±ì íì¸íì§ ììµëë¤.
ì´ ë©ìëë null íë¡í íì
ê°ì²´ ë° ììë hasOwnProperty() ë©ìë를 ì¬ì ìí ê°ì²´ì ëí´ ìëíë¯ë¡ Object.prototype.hasOwnProperty()ë³´ë¤ ê¶ì¥ë©ëë¤. Object.prototype.hasOwnProperty.call(obj, prop)ì ê°ì ì¸ë¶ ê°ì²´ìì Object.prototype.hasOwnProperty()를 í¸ì¶íì¬ ì´ë¬í 문ì 를 í´ê²°í ì ìì§ë§, Object.hasOwn()ì ì¬ì©íë ê²ì´ ë ì§ê´ì ì
ëë¤.
ìì
>ìì±ì ì¡´ì¬ë¥¼ ìíí기 ìí Object.hasOwn() ì¬ì©í기
ë¤ì ì½ëë example ê°ì²´ì propì´ë¼ë ìì±ì í¬í¨ ì¬ë¶ë¥¼ íì¸íë ë°©ë²ì ë³´ì¬ì¤ëë¤.
const example = {};
Object.hasOwn(example, "prop"); // false - 'prop'ì´ ì ìëì§ ìììµëë¤
example.prop = "exists";
Object.hasOwn(example, "prop"); // true - 'prop' ì´ ì ìëììµëë¤
example.prop = null;
Object.hasOwn(example, "prop"); // true - ìì²´ ìì±ì´ null ê°ì¼ë¡ ì¡´ì¬í©ëë¤
example.prop = undefined;
Object.hasOwn(example, "prop"); // true - ìì²´ ìì±ì´ undefined ê°ì¼ë¡ ì¡´ì¬í©ëë¤
ì§ì vs ììë ìì±
ë¤ì ìì ììë ì§ì ì ì¸ ìì±ê³¼ íë¡í íì ì²´ì¸ì íµí´ ììë ìì±ì 구ë¶í©ëë¤.
const example = {};
example.prop = "exists";
// `hasOwn` ì ì¤ì§ ì§ì ì ì¸ ìì±ë§ true를 ë°íí©ëë¤.
Object.hasOwn(example, "prop"); // true
Object.hasOwn(example, "toString"); // false
Object.hasOwn(example, "hasOwnProperty"); // false
// `in` ì°ì°ìë ì§ì ì ì¸ ìì± í¹ì ììë ìì±ì´ ìì ê²½ì° true를 ë°íí©ëë¤.
"prop" in example; // true
"toString" in example; // true
"hasOwnProperty" in example; // true
ê°ì²´ì ìì±ì ìíí기
ê°ì²´ì ì´ê±° ê°ë¥í ìì±ì ìíí기 ìí´ìë ë°ëì ìëì ê°ì´ ì¬ì©í´ì¼ í©ëë¤.
const example = { foo: true, bar: true };
for (const name of Object.keys(example)) {
// â¦
}
ê·¸ë¬ë for...inì ì¬ì©í´ì¼ íë ê²½ì° Object.hasOwn()ì ì¬ì©íì¬ ììë ìì±ì ê±´ëë¸ ì ììµëë¤.
const example = { foo: true, bar: true };
for (const name in example) {
if (Object.hasOwn(example, name)) {
// â¦
}
}
ë°°ì´ ì¸ë±ì¤ì ì¡´ì¬ì¬ë¶ íì¸í기
Arrayì ììë ì§ì ì ì¸ ìì±ì¼ë¡ ì ìë기 ë문ì hasOwn() ë©ìë를 ì¬ì©íì¬ í¹ì ì¸ë±ì¤ì ì¡´ì¬ ì¬ë¶ë¥¼ íì¸í ì ììµëë¤.
const fruits = ["Apple", "Banana", "Watermelon", "Orange"];
Object.hasOwn(fruits, 3); // true ('Orange')
Object.hasOwn(fruits, 4); // false - ì ìëì§ ìììµëë¤
hasOwnPropertyì 문ì ì¬ë¡
ì´ ì¹ì
ììë hasOwn()ì´ hasOwnPropertyì ìí¥ì 미ì¹ë 문ì ì ìí¥ì ë°ì§ ìëë¤ë ê²ì ë³´ì¬ì¤ëë¤. 첫 ë²ì§¸ë¡, hasOwnProperty()를 ì¬êµ¬íí ê°ì²´ì í¨ê» ì¬ì©í ì ììµëë¤. ìë ìì ìì ì¬êµ¬íë hasOwnProperty() ë©ìëë 모ë ìì±ì ëí´ ê±°ì§ì ë°ííì§ë§ Object.hasOwn() ëìì ë³í¨ìì´ ì ì§ë©ëë¤.
const foo = {
hasOwnProperty() {
return false;
},
bar: "The dragons be out of office",
};
console.log(foo.hasOwnProperty("bar")); // false
console.log(Object.hasOwn(foo, "bar")); // true
ëí null-íë¡í íì
ê°ì²´ì í¨ê» ì¬ì©í ìë ììµëë¤. ì´ë Object.prototypeìì ììëì§ ìì¼ë¯ë¡ hasOwnProperty()ì ì ê·¼í ì ììµëë¤.
const foo = Object.create(null);
foo.prop = "exists";
console.log(foo.hasOwnProperty("prop"));
// Uncaught TypeError: foo.hasOwnProperty is not a function
console.log(Object.hasOwn(foo, "prop")); // true
ëª ì¸ì
| Specification |
|---|
| ECMAScript® 2027 Language Specification > # sec-object.hasown > |