Baseline Widely available
ê°ì²´ë new Object()
, Object.create()
ëë literal í기ë²(initializer í기ë²)ì ì¬ì©í´ ì´ê¸°íë ì ììµëë¤. ê°ì²´ ì´ê¸°ìë ì¤ê´í¸({}
)ë¡ ë¬¶ì¸ 0ê° ì´ìì ê°ì²´ì íë¡í¼í°ëª
ê³¼ ê´ë ¨ ê°ì ìì 콤ë§ë¡ 구ë¶í 목ë¡ì
ëë¤.
const object1 = { a: "foo", b: 42, c: {} };
console.log(object1.a);
// Expected output: "foo"
const a = "foo";
const b = 42;
const c = {};
const object2 = { a: a, b: b, c: c };
console.log(object2.b);
// Expected output: 42
const object3 = { a, b, c };
console.log(object3.a);
// Expected output: "foo"
구문
let o = {};
let o = { a: "foo", b: 42, c: {} };
let a = "foo",
b = 42,
c = {};
let o = { a: a, b: b, c: c };
let o = {
property: function (parameters) {},
get property() {},
set property(value) {},
};
ECMAScript 2015ì ìë¡ì´ í기ë²
ì´ë¬í í기ë²ì ì§ìì ëí´ìë í¸íì± í ì´ë¸ì íì¸í´ì£¼ì¸ì. ì§ìíì§ ìë íê²½ììë ì´ë¬í í기ë²ë¤ì 구문 ìë¬ë¥¼ ì ë°í©ëë¤.
// íë¡í¼í°ëª
ì½ì (ES2015)
let a = "foo",
b = 42,
c = {};
let o = { a, b, c };
// ë©ìëëª
ì½ì (ES2015)
let o = {
property(parameters) {},
};
// ê³ì°ë íë¡í¼í°ëª
(ES2015)
let prop = "foo";
let o = {
[prop]: "hey",
["b" + "ar"]: "there",
};
ì¤ëª
ê°ì²´ ì´ê¸°ìë Object
ì ì´ê¸°í를 ëíë´ë ííì
ëë¤. ê°ì²´ë ê°ì²´ë¥¼ ëíë´ë ë° ì¬ì©ëë properties ë¡ êµ¬ì±ë©ëë¤. ê°ì²´ íë¡í¼í°ì ê°ì ìì ê° ë°ì´í° íì
ëë ë¤ë¥¸ ê°ì²´ë¥¼ í¬í¨í ì ììµëë¤.
ê°ì²´ 리í°ë´ í기ë²ì JavaScript Object Notation(JSON)ê³¼ ëì¼íì§ ììµëë¤. ë¹ì·íê² ë³´ì´ì§ë§ ë¤ìê³¼ ê°ì ì°¨ì´ê° ììµëë¤.
"property": value
구문ì ì¬ì©í´ ì ìí íë¡í¼í°ë§ íì©í©ëë¤. íë¡í¼í°ëª
ìë ë°ëì í°ë°ì´í를 ì¬ì©í´ì¼ íë©° ì½ìì¼ë¡ ì ìí ì ììµëë¤.true
, false
, null
, ëë ë¤ë¥¸ (JSON) ê°ì²´ë§ ì¬ì©í ì ììµëë¤.Date
ì ê°ì ê°ì²´ë JSON.parse()
ì´íì 문ìì´ì´ ë©ëë¤.JSON.parse()
ë ê³ì°ë íë¡í¼í°ëª
ì ê±°ë¶íë©° ìë¬ê° ë°ìí©ëë¤.íë¡í¼í°ê° ìë ë¹ ê°ì²´ë ë¤ìê³¼ ê°ì´ ìì±í©ëë¤.
literal ëë initializer í기ë²ì ì¥ì ì ì¤ê´í¸ ìì íë¡í¼í°ë¥¼ ê°ë ê°ì²´ë¥¼ ë¹ ë¥´ê² ìì±í ì ìë¤ë ê²ì
ëë¤. 콤ë§ë¡ 구ë¶íì¬ key: value
ìì 목ë¡ì ìì±íë©´ ë©ëë¤.
ë¤ì ì½ëë ì¸ ê°ì íë¡í¼í°ë¥¼ ê°ë ê°ì²´ë¥¼ ìì±íë©° í¤ë "foo"
, "age"
, "baz"
ì
ëë¤. ë¤ì ì¸ í¤ì ê°ì 문ìì´ "bar"
, ì«ì 42
, ê·¸ë¦¬ê³ ë¤ë¥¸ ê°ì²´ì
ëë¤.
let object = {
foo: "bar",
age: 42,
baz: { myProp: 12 },
};
íë¡í¼í°ì ì ê·¼í기
ê°ì²´ë¥¼ ìì±í íìë ì´ë¥¼ ì½ê±°ë ë³ê²½í ì ììµëë¤. ê°ì²´ íë¡í¼í°ë ì íê¸°ë² ëë ëê´í¸ í기ë²ì ì¬ì©í´ ì ê·¼í ì ììµëë¤(ìì¸í ì ë³´ë íë¡í¼í° ì ê·¼ì를 ë³´ì¸ì).
object.foo; // "bar"
object["age"]; // 42
object.baz; // {myProp: 12}
object.baz.myProp; //12
íë¡í¼í° ì ì
ì°ë¦¬ë ì´ê¸°ì 구문ì ì¬ì©í´ íë¡í¼í°ë¥¼ ìì±íë ë°©ë²ì ì´ë¯¸ ë°°ì ìµëë¤. ëëë¡ ì½ëì ë³ì를 ê°ì²´ë¡ ë£ê³ ì¶ì ê²½ì°ê° ììµëë¤. ë¤ìê³¼ ê°ì ì½ë를 ë³´ê² ë ì ììµëë¤.
let a = "foo",
b = 42,
c = {};
let o = {
a: a,
b: b,
c: c,
};
ECMAScript 2015를 ì¬ì©íë©´ ë ì§§ì í기ë²ì ì¬ì©í´ ëì¼í 결과를 ì»ì ì ììµëë¤.
let a = "foo",
b = 42,
c = {};
// íë¡í¼í°ëª
ì½ì (ES2015)
let o = { a, b, c };
// ë¤ë¥´ê² ìì±íë©´,
console.log(o.a === { a }.a); // true
ì¤ë³µë íë¡í¼í°ëª
ëì¼í íë¡í¼í°ëª ì ì¬ì©íë©´ ë ë²ì§¸ íë¡í¼í°ê° 첫 ë²ì§¸ íë¡í¼í°ë¥¼ ë®ì´ìëë¤.
let a = { x: 1, x: 2 };
console.log(a); // {x: 2}
ECMAScript 5 ì격 모ë ì½ëììë ì¤ë³µë íë¡í¼í°ëª
ì SyntaxError
ë¡ ê°ì£¼í©ëë¤. ë°íì ì ë³µì 를 ê°ë¥íê² í ê³ì°ë íë¡í¼í° ëª
ì ëì
ì¼ë¡ ECMScript 2015ë ì´ ì íì ì ê±°íìµëë¤.
function haveES2015DuplicatePropertySemantics() {
"use strict";
try {
({ prop: 1, prop: 2 });
// ìë¬ê° ë°ìíì§ ìì, ì¤ë³µë íë¡í¼í°ëª
ì´ ì격 모ëìì íì©ë¨
return true;
} catch (e) {
// ìë¬ê° ë°ìí¨, ì격 모ëìì ì¤ë³µì´ ê¸ì§ë¨
return false;
}
}
ë©ìë ì ì
ê°ì²´ì íë¡í¼í°ë function ëë getter ëë setter ë©ìë를 참조í ìë ììµëë¤.
let o = {
property: function (parameters) {},
get property() {},
set property(value) {},
};
ECMAScript 2015ììë ì½ì í기ë²ì ì¬ì©í ì ìì¼ë¯ë¡ "function
" í¤ìëë íìíì§ ììµëë¤.
// ì½ì ë©ìëëª
(ES2015)
let o = {
property(parameters) {},
};
ECMAScript 2015ììë ê°ì´ generator í¨ìì¸ íë¡í¼í°ë¥¼ ê°ê²°íê² ì ìíë ë°©ë²ì´ ììµëë¤.
let o = {
*generator() {
...........
}
};
ë¤ìì ES5ì ì ì¬í í기ë²ê³¼ ëì¼í©ëë¤(íì§ë§ ECMAScript 5ìë generatorê° ììì ì ìíì¸ì).
let o = {
generator: function* () {
...........
}
};
ë©ìëì ëí ìì¸ ì ë³´ì ìì ë ë©ìë ì ì를 ë³´ì¸ì.
ê³ì°ë íë¡í¼í°ëªECMAScript 2015ë¶í° ê°ì²´ ì´ê¸°ì 구문ì ê³ì°ë íë¡í¼í° ëª
ë ì§ìí©ëë¤. ëê´í¸ []
ììì ííìì íì©íë©°, ííìì íë¡í¼í°ëª
ì¼ë¡ ê³ì°ëì´ ì¬ì©ë©ëë¤. ì´ë ì´ë¯¸ íë¡í¼í°ë¥¼ ì½ê³ ì¤ì íë ë° ì¬ì©íë íë¡í¼í° ì ê·¼ì 구문ì ëê´í¸ í기ë²ì ì°ììíµëë¤.
ì´ì ê°ì²´ 리í°ë´ììë ì ì¬í 구문ì ì¬ì©í ì ììµëë¤.
// ê³ì°ë íë¡í¼í°ëª
(ES2015)
let i = 0;
let a = {
["foo" + ++i]: i,
["foo" + ++i]: i,
["foo" + ++i]: i,
};
console.log(a.foo1); // 1
console.log(a.foo2); // 2
console.log(a.foo3); // 3
const items = ["A", "B", "C"];
const obj = {
[items]: "Hello",
};
console.log(obj); // A,B,C: "Hello"
console.log(obj["A,B,C"]); // "Hello"
let param = "size";
let config = {
[param]: 12,
["mobile" + param.charAt(0).toUpperCase() + param.slice(1)]: 4,
};
console.log(config); // {size: 12, mobileSize: 4}
ì ê° íë¡í¼í°
ECMAScriptì ë머ì§/ì ê° íë¡í¼í° ì ì(stage 4)ì ê°ì²´ 리í°ë´ì ì ê° íë¡í¼í°ë¥¼ ì¶ê°í©ëë¤. ì´ë ì ê³µë ê°ì²´ë¡ë¶í° ìë¡ì´ ê°ì²´ë¡ ìì ë§ì ì´ê±°í íë¡í¼í°ë¥¼ ë³µì¬í©ëë¤.
ì´ì Object.assign()
ë³´ë¤ ë ì§§ì 구문ì ì¬ì©í´ ìì ë³µì (prototype
ì ì¸) ëë ê°ì²´ ë³í©ì´ ê°ë¥í©ëë¤.
let obj1 = { foo: "bar", x: 42 };
let obj2 = { foo: "baz", y: 13 };
let clonedObj = { ...obj1 };
// Object { foo: "bar", x: 42 }
let mergedObj = { ...obj1, ...obj2 };
// Object { foo: "baz", x: 42, y: 13 }
íë¡í íì ë³íê²½ê³ :
Object.assign()
ì setters를 í¸ë¦¬ê±°íë ë°ë©´ ì ê° ì°ì°ìë ê·¸ë ì§ ììì ì ìíì¸ì!
__proto__: value
ëë "__proto__": value
ííì íë¡í íì
ì ìë __proto__
ì´ë¦ì ê°ë íë¡í¼í°ë¥¼ ìì±íì§ ììµëë¤. ëì ì, ì ê³µë ê°ì´ ê°ì²´ ëë null
ì¸ ê²½ì°, ìì±ë ê°ì²´ì [[Prototype]]
ì í´ë¹ ê°ì¼ë¡ ë³ê²½í©ëë¤(ê°ì´ ê°ì²´ ëë null
ì´ ìë ê²½ì°, ê°ì²´ë ë³ê²½ëì§ ììµëë¤).
let obj1 = {};
assert(Object.getPrototypeOf(obj1) === Object.prototype);
let obj2 = { __proto__: null };
assert(Object.getPrototypeOf(obj2) === null);
let protoObj = {};
let obj3 = { __proto__: protoObj };
assert(Object.getPrototypeOf(obj3) === protoObj);
let obj4 = { __proto__: "not an object or null" };
assert(Object.getPrototypeOf(obj4) === Object.prototype);
assert(!obj4.hasOwnProperty("__proto__"));
ê°ì²´ 리í°ë´ììë ë¨ì¼ íë¡í íì ë³íë§ íì©ë©ëë¤. ë¤ì¤ íë¡í íì ë³íì 구문 ìë¬ì ëë¤.
"ì½ë¡ " í기ë²ì ì¬ì©íì§ ìë íë¡í¼í° ì ìë íë¡í íì ë³íì´ ìëëë¤. ì´ë ë¤ë¥¸ ì´ë¦ì ì¬ì©íì¬ ì ì¬í ì ìì ëì¼íê² ëìíë íë¡í¼í° ì ìì ëë¤.
let __proto__ = "variable";
let obj1 = { __proto__ };
assert(Object.getPrototypeOf(obj1) === Object.prototype);
assert(obj1.hasOwnProperty("__proto__"));
assert(obj1.__proto__ === "variable");
let obj2 = {
__proto__() {
return "hello";
},
};
assert(obj2.__proto__() === "hello");
let obj3 = { ["__prot" + "o__"]: 17 };
assert(obj3.__proto__ === 17);
ëª
ì¸ ë¸ë¼ì°ì í¸íì± ê°ì´ 보기
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