Object
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ìâ©.
* Some parts of this feature may have varying levels of support.
Object í´ëì¤ë JavaScriptì ë°ì´í° ì í ì¤ íë를 ëíë
ëë¤. ë¤ìí í¤ ëª¨ì ë° ë ë³µì¡í ìí°í°ë¤ì ì ì¥íë ë° ì¬ì©ë©ëë¤. ê°ì²´ë Object() ìì±ì ëë ê°ì²´ ì´ê¸°ì / 리í°ë´ 구문를 íµí´ ìì±í ì ììµëë¤.
ì¤ëª
JavaScriptì ê±°ì 모ë ê°ì²´ë Objectì ì¸ì¤í´ì¤ì
ëë¤. ì¼ë°ì ì¸ ê°ì²´ë Object.prototypeìì ìì±(ë©ìë í¬í¨)ì ììíì§ë§, ì´ë¬í ìì±ë¤ì ê°ë ¤ì§(ì¬ì ìë ) ì ììµëë¤. ê·¸ë¬ë Objectë ìëì ì¼ë¡ ê°ë ¤ì§ì§ ìê² ìì±ëê±°ë(ì: Object.create(null)), ëì´ì ê°ë ¤ì§ì§ ìëë¡ ë³ê²½ë ì ììµëë¤(ì: Object.setPrototypeOf).
Object íë¡í íì
ê°ì²´ì ëí ë³ê²½ ì¬íì í´ë¹ ë³ê²½ ì¬íì ëìì´ ëë íë¡í íì
ì²´ì¸ìì ìì± ë° ë©ìëê° ì¶ê°ë¡ ì¬ì ìëì§ ìë í íë¡í íì
ì²´ì¸ì íµí´ 모ë ê°ì²´ìì ë³¼ ì ììµëë¤. ì´ê²ì ê°ì²´ ëìì ì¬ì ìíê±°ë íì¥íë ë§¤ì° ê°ë ¥íì§ë§ ì ì¬ì ì¼ë¡ ìíí ë©ì»¤ëì¦ì ì ê³µí©ëë¤.
Object ìì±ìë 주ì´ì§ ê°ì ëí ê°ì²´ ëí¼ë¥¼ ìì±í©ëë¤.
- ê°ì´
nullëëundefinedì´ë©´ ë¹ ê°ì²´ë¥¼ ìì±íì¬ ë°íí©ëë¤. - ê·¸ë ì§ ìì¼ë©´ 주ì´ì§ ê°ì í´ë¹íë íì ì ê°ì²´ë¥¼ ë°íí©ëë¤.
- ê°ì´ ì´ë¯¸ ê°ì²´ì¸ ê²½ì° ê·¸ ê°ì ë°íí©ëë¤.
ìì±ìê° ìë ë§¥ë½ìì í¸ì¶ë ë Objectë new Object()ì ëì¼íê² ìëí©ëë¤.
ê°ì²´ ì´ê¸°ì / 리í°ë´ 구문ë 참조íì¸ì.
ê°ì²´ì ìì± ìì í기
ê°ì²´ ìì²´ìë ìì±ì ìì íë ë©ìëê° ììµëë¤(ì: Map.prototype.delete()). ìì í기 ìí´ìë delete ì°ì°ì를 ì¬ì©í´ì¼ í©ëë¤.
ìì±ì
Object()-
ì
Objectê°ì²´ë¥¼ ë§ëëë¤. ì´ ë ìì±ë ê°ì²´ë 주ì´ì§ ê°ì ëí ëí¼ì ëë¤.
ì ì ë©ìë
Object.assign()-
íë ì´ìì ì본 ê°ì²´ë¤ë¡ë¶í° 모ë ì´ê±° ê°ë¥í ìì±ë¤ì ëì ê°ì²´ë¡ ë³µì¬í©ëë¤.
Object.create()-
ì§ì í íë¡í íì (prototype)ì ê°ì²´ ë° ìì±ì ê°ê³ ìë ì ê°ì²´ë¥¼ ìì±í©ëë¤.
Object.defineProperty()-
ì§ì í ìì ì(descriptor)ìì ìì í ìì±ì ê°ì²´ì ì¶ê°í©ëë¤.
Object.defineProperties()-
ì§ì í ìì ìë¤ìì ìì í ìì±ë¤ì ê°ì²´ì ì¶ê°í©ëë¤.
Object.entries()-
ì§ì í ê°ì²´ ìì ì 모ë ì´ê±° ê°ë¥í 문ìì´ ìì±ë¤ì
[key, value]ìì¼ë¡ 구ì±ë ë°°ì´ì ë°íí©ëë¤. Object.freeze()-
ê°ì²´ë¥¼ ê³ ì (freeze)í©ëë¤. ë¤ë¥¸ ê³³ì ì½ëìì í´ë¹ ìì±ì ìì íê±°ë ë³ê²½í ì ìê² ë©ëë¤.
Object.fromEntries()-
[key, value]ìì iterableë¡ë¶í° ì ê°ì²´ë¥¼ ë°íí©ëë¤. (Object.entriesì ë°ëì ëë¤.) Object.getOwnPropertyDescriptor()-
ê°ì²´ì ì§ì í ìì±ì ëí ìì± ìì ì를 ë°íí©ëë¤.
Object.getOwnPropertyDescriptors()-
ê°ì²´ ìì ì 모ë ìì± ìì ìë¤ë¡ 구ì±ë ê°ì²´ë¥¼ ë°íí©ëë¤.
Object.getOwnPropertyNames()-
ì§ì í ê°ì²´ ìì ì 모ë ì´ê±° ê°ë¥íê±°ë ë¶ê°ë¥í ìì±ë¤ì ì´ë¦ì¼ë¡ 구ì±ë ë°°ì´ì ë°íí©ëë¤.
Object.getOwnPropertySymbols()-
ì§ì í ê°ì²´ ìì ì 모ë ì¬ë³¼ ìì±ë¤ë¡ 구ì±ë ë°°ì´ì ë°íí©ëë¤.
Object.getPrototypeOf()-
ì§ì í ê°ì²´ì íë¡í íì (ë´ë¶
[[Prototype]]ìì±)ì ë°íí©ëë¤. Object.is()-
ë ê°ì´ ê°ìì§ë¥¼ ë¹êµí©ëë¤. 모ë
NaNê°ì ê°ë¤ê³ ì²ë¦¬í©ëë¤. (ì¶ì ëë± ë¹êµ ë° ì격í ëë± ë¹êµì ë¤ë¥¸ ì ì ëë¤.) Object.isExtensible()-
ê°ì²´ì íì¥ì´ ê°ë¥íì§ ì¬ë¶ë¥¼ íì¸í©ëë¤.
Object.isFrozen()-
ê°ì²´ê° ê³ ì (freeze)ëìëì§ ì¬ë¶ë¥¼ íì¸í©ëë¤.
Object.isSealed()-
ê°ì²´ê° ë´ì¸(seal)ëìëì§ ì¬ë¶ë¥¼ íì¸í©ëë¤.
Object.keys()-
ì§ì í ê°ì²´ ìì ì 모ë ì´ê±° ê°ë¥í 문ìì´ ìì±ë¤ì ì´ë¦ì¼ë¡ 구ì±ë ë°°ì´ì ë°íí©ëë¤.
Object.preventExtensions()-
ê°ì²´ê° íì¥ëì§ ëª»íëë¡ í©ëë¤.
Object.seal()-
ë¤ë¥¸ ì½ëê° ê°ì²´ì ìì±ì ìì íì§ ëª»íëë¡ í©ëë¤.
Object.setPrototypeOf()-
ê°ì²´ì íë¡í íì (ë´ë¶
[[Prototype]]ìì±)ì ì¤ì í©ëë¤. Object.values()-
ì§ì í ê°ì²´ ìì ì 모ë ì´ê±° ê°ë¥í 문ìì´ ìì±ì í´ë¹íë ê°ë¤ë¡ 구ì±ë ë°°ì´ì ë°íí©ëë¤.
ì¸ì¤í´ì¤ ìì±
Object.prototype.constructor-
ê°ì²´ì íë¡í íì ì ìì±íë í¨ì를 ì§ì í©ëë¤.
Object.prototype.__proto__-
ê°ì²´ê° ì¸ì¤í´ì¤íë ë íë¡í íì ì¼ë¡ ì¬ì©ë ê°ì²´ë¥¼ ê°ë¦¬íµëë¤.
ì¸ì¤í´ì¤ ë©ìë
Object.prototype.__defineGetter__()-
ì¡ì¸ì¤(get)í ë ì¤íëì´ ê°ì ë°ííë í¨ìì ì§ì í ìì±ì ì°ê²°í©ëë¤.
Object.prototype.__defineSetter__()-
ì¤ì (set)í ë ì¤íëì´ í´ë¹ ìì±ì ìì íë í¨ìì ì§ì í ìì±ì ì°ê²°í©ëë¤.
Object.prototype.__lookupGetter__()-
Object.prototype.__defineGetter__()ë©ìëì ìí´ ì§ì ë ìì±ê³¼ ì°ê²°ë í¨ì를 ë°íí©ëë¤. Object.prototype.__lookupSetter__()-
Object.prototype.__defineSetter__()ë©ìëì ìí´ ì§ì ë ìì±ê³¼ ì°ê²°ë í¨ì를 ë°íí©ëë¤. Object.prototype.hasOwnProperty()-
ê°ì²´ì ì§ì í ìì±ì´ í´ë¹ ê°ì²´ì ì§ì í¬í¨ëì´ ìê³ íë¡í íì ì²´ì¸ì íµí´ ììëì§ ìëì§ ì¬ë¶ë¥¼ ëíë´ë ë¶ë¦¬ì¸ ê°ì ë°íí©ëë¤.
Object.prototype.isPrototypeOf()-
ì´ ë©ìë를 í¸ì¶í ê°ì²´ê° ì§ì í ê°ì²´ì íë¡í íì ì²´ì¸ì ìëì§ ì¬ë¶ë¥¼ ëíë´ë ë¶ë¦¬ì¸ ê°ì ë°íí©ëë¤.
Object.prototype.propertyIsEnumerable()-
ë´ë¶ ECMAScript [[Enumerable]] ìì±ì´ ì¤ì ëìëì§ ì¬ë¶ë¥¼ ëíë´ë ë¶ë¦¬ì¸ ê°ì ë°íí©ëë¤.
Object.prototype.toLocaleString()-
toString()를 í¸ì¶í©ëë¤. Object.prototype.toString()-
ê°ì²´ì 문ìì´ ííì ë°íí©ëë¤.
Object.prototype.valueOf()-
ì§ì í ê°ì²´ì ìì ê°ì ë°íí©ëë¤.
ìì
>undefined ë° null íì
ì ì§ì í Object ì¬ì©
ë¤ì ìì ë ë³ì oì ë¹ Object ê°ì²´ë¥¼ ì ì¥í©ëë¤.
let o = new Object();
let o = new Object(undefined);
let o = new Object(null);
Objectë¡ Boolean ê°ì²´ ìì±í기
ë¤ì ìì ë ë³ì oì Boolean ê°ì²´ë¥¼ ì ì¥í©ëë¤.
// o = new Boolean(true) ì ê°ì
let o = new Object(true);
// o = new Boolean(false) ì ê°ì
let o = new Object(Boolean());
ê°ì²´ íë¡í íì
기존 Object.prototype ë©ìëì ëìì ë³ê²½íê³ ì í ëìë 기존 ë´ì©ì ìì´ë ë¤ì íì¥í ë´ì©ì ëííì¬ ì½ë를 주ì
íë ê²ì ê³ ë ¤íì¸ì. ì를 ë¤ì´, ì´ (í
ì¤í¸ëì§ ìì) ì½ëë 기본 ì ê³µ ì½ë ëë ë¤ë¥¸ ì¬ëì íì¥ ì¤íë기 ì ì ì¬ì ì¡°ê±´ë¶ë¡ ì¬ì©ì ì ì ì½ë를 ì¤íí©ëë¤.
í¨ìê° í¸ì¶ëë©´ í¸ì¶ì ëí 매ê°ë³ìê° ì ì¬ë°°ì´ "ë³ì" arguments ê°ì²´ì ë³´ê´ë©ëë¤. ì를 ë¤ì´, myFn(a, b, c)를 í¸ì¶íë©´ myFn 본문 ë´ì arguments ê°ì²´ìë (a, b, c)ì í´ë¹íë 3ê°ì ì ì¬ë°°ì´ììê° í¬í¨ë©ëë¤.
hookì íµí´ íë¡í íì
ì ìì íê³ ì í ëì í´ë¹ í¨ììì apply()를 í¸ì¶íë©´ì thisì arguments ê°ì²´ë¥¼ íì¬ ëìì ì ë¬í©ëë¤. ì´ í¨í´ì Node.prototype, Function.prototype ë± ëª¨ë íë¡í íì
ì ì ì©í ì ììµëë¤.
var current = Object.prototype.valueOf;
// ë´ê° ì§ì í ìì± "-prop-value"ì ë²ë¶ì¼ì ê±¸ì³ ì¬ì©ëê³ ìê³
// íì ëì¼í íë¡í íì
ì²´ì¸ì ìì§ ì기 ë문ì, Object.prototypeì ìì íê³ ì¶ìµëë¤.
Object.prototype.valueOf = function () {
if (this.hasOwnProperty("-prop-value")) {
return this["-prop-value"];
} else {
// ë´ê° ë§ë ê°ì²´ê° ìë ê² ê°ì¼ë¯ë¡,
// ê°ë¥í ìµì ì ë¤í´ ìëì ëìì ì¬ííì¬ ê¸°ë³¸ ëìì¼ë¡ ëìê°ê² ìµëë¤.
// 'apply' ë©ìëë ë¤ë¥¸ ì¸ì´ììì 'super'ì²ë¼ ìëí©ëë¤.
// valueOf()ê° arguments를 ì·¨íì§ ìëë¼ë, ë¤ë¥¸ hookì´ ìì¼ë¦¬ë¼ ìê°í©ëë¤.
return current.apply(this, arguments);
}
};
JavaScriptìë ëª íí íì í´ëì¤ ê°ì²´ê° ì기 ë문ì, íë¡í íì ì í¹ì 기ë¥ì "기본 í´ëì¤" ê°ì²´ë¥¼ ë§ëë ë° ì ì©í í´ê²° ë°©ë²ì ëë¤. ì를 ë¤ì´:
var Person = function (name) {
this.name = name;
this.canTalk = true;
};
Person.prototype.greet = function () {
if (this.canTalk) {
console.log("Hi, I am " + this.name);
}
};
var Employee = function (name, title) {
Person.call(this, name);
this.title = title;
};
Employee.prototype = Object.create(Person.prototype);
Employee.prototype.constructor = Employee; // Object.prototype.constructor를 Employeeë¡ ì¤ì íì§ ìì¼ë©´
// Person (parent)ì prototype.constructor를 ì¬ì©í©ëë¤.
// ì´ë¥¼ í¼í기 ìí´ prototype.constructor를 Employee (child)ë¡ ì¤ì í©ëë¤.
Employee.prototype.greet = function () {
if (this.canTalk) {
console.log("Hi, I am " + this.name + ", the " + this.title);
}
};
var Customer = function (name) {
Person.call(this, name);
};
Customer.prototype = Object.create(Person.prototype);
Customer.prototype.constructor = Customer; // Object.prototype.constructor를 Customerë¡ ì¤ì íì§ ìì¼ë©´
// Person (parent)ì prototype.constructor를 ì¬ì©í©ëë¤.
// ì´ë¥¼ í¼í기 ìí´ prototype.constructor를 Customer (child)ë¡ ì¤ì í©ëë¤.
var Mime = function (name) {
Person.call(this, name);
this.canTalk = false;
};
Mime.prototype = Object.create(Person.prototype);
Mime.prototype.constructor = Mime; // Object.prototype.constructor를 Mimeë¡ ì¤ì íì§ ìì¼ë©´
// Person (parent)ì prototype.constructor를 ì¬ì©í©ëë¤.
// ì´ë¥¼ í¼í기 ìí´ prototype.constructor를 Mime (child)ë¡ ì¤ì í©ëë¤.
var bob = new Employee("Bob", "Builder");
var joe = new Customer("Joe");
var rg = new Employee("Red Green", "Handyman");
var mike = new Customer("Mike");
var mime = new Mime("Mime");
bob.greet();
// Hi, I am Bob, the Builder
joe.greet();
// Hi, I am Joe
rg.greet();
// Hi, I am Red Green, the Handyman
mike.greet();
// Hi, I am Mike
mime.greet();
ëª ì¸
| Specification |
|---|
| ECMAScript® 2026 Language Specification > # sec-object-objects > |