Baseline Widely available
ãªãã¸ã§ã¯ãåæåå (object initializer) ã¯ããªãã¸ã§ã¯ãã®ããããã£åã¨é¢é£ããå¤ã® 0 å以ä¸ã®ãã¢ã䏿¬å¼§ ({}
) ã§å²ãã ã«ã³ãåºåãã®ãªã¹ãã§ãããªãã¸ã§ã¯ã㯠Object.create()
ã new
æ¼ç®åã§ã³ã³ã¹ãã©ã¯ã¿ã¼é¢æ°ãå¼ã³åºãã¦ä½¿ç¨ãããã¨ãã§ãã¾ãã
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"
æ§æ
o = {
a: "foo",
b: 42,
c: {},
1: "number literal property",
"foo:bar": "string literal property",
shorthandProperty,
method(parameters) {
// â¦
},
get property() {},
set property(value) {},
[expression]: "computed property",
__proto__: prototype,
...spreadProperty,
};
解説
ãªãã¸ã§ã¯ãåæååã¯ãObject
ã®åæåã表ãå¼ã§ãããªãã¸ã§ã¯ãã¯ãªãã¸ã§ã¯ãã表ãããããã£ã§æ§æããã¾ãããªãã¸ã§ã¯ãããããã£ã®å¤ã¯ãç¹å®ã®ããªããã£ããã¼ã¿åãä»ã®ãªãã¸ã§ã¯ãã®ã©ã¡ãããå«ã¿ã¾ãã
ãªãã¸ã§ã¯ããªãã©ã«æ§æã¯ JavaScript Object Notation (JSON) ã¨ã¯ç°ãªãã¾ãã両è ã¯ä¼¼ã¦ãã¾ãããéããããã¾ãã
"property": value
æ§æã使ç¨ããããããã£å®ç¾©ã®ã¿ã許å¯ãã¾ããããããã£åã¯äºéå¼ç¨ç¬¦ã§å²ã¾ãªããã°ãªãã¾ãããããã¦ããã®å®ç¾©ãç¥è¨ã«ãããã¨ã¯ã§ãã¾ãããè¨ç®ãããããããã£åã許ããã¾ãããtrue
ãfalse
ãnull
ãé
åãä»ã® JSON ãªãã¸ã§ã¯ãã®ã¿ã§ããããã¯JSONãã¡ã½ãããããã¬ã¼ã³ã§ãªããªãã¸ã§ã¯ããä¾ãã° Date
ã RegExp
ã表ç¾ã§ããªããã¨ãæå³ãã¦ãã¾ãã"__proto__"
ã¯é常ã®ããããã£ãã¼ã§ãããªãã¸ã§ã¯ããªãã©ã«ã§ã¯ããªãã¸ã§ã¯ãã®ãããã¿ã¤ããè¨å®ãã¾ããJSON ã¯ãªãã¸ã§ã¯ããªãã©ã«æ§æã® 峿 ¼ãªãµãã»ãã ã§ãããæå¹ãª JSON ããã¹ãã¯ãã¹ã¦ãªãã¸ã§ã¯ããªãã©ã«ã¨ãã¦è§£éã§ããæ§æã¨ã©ã¼ãçºçãããªããã¨ãæå³ãã¦ãã¾ããå¯ä¸ã®ä¾å¤ã¯ããªãã¸ã§ã¯ããªãã©ã«æ§æã§ã¯ __proto__
ãã¼ã®éè¤ãç¦æ¢ãã¦ãããã¨ã§ãããã㯠JSON.parse()
ã«ã¯é©ç¨ããã¾ãããå¾è
㯠__proto__
ãé常ã®ããããã£ã®ããã«æ±ããæå¾ã«åºç¾ããå¤ãããããã£ã®å¤ã¨ãã¦å°ãã¾ãããªãã¸ã§ã¯ããªãã©ã«ã§ã¯ãªãã¸ã§ã¯ãã®ãããã¿ã¤ããè¨å®ãã JSON ã§ã¯é常ã®ããããã£ãè¨å®ãã¾ãã
console.log(JSON.parse('{ "__proto__": 0, "__proto__": 1 }')); // {__proto__: 1}
console.log({ "__proto__": 0, "__proto__": 1 }); // SyntaxError: Duplicate __proto__ fields are not allowed in object literals
console.log(JSON.parse('{ "__proto__": {} }')); // { __proto__: {} }
console.log({ "__proto__": {} }); // {} (with {} as prototype)
ä¾ ãªãã¸ã§ã¯ãã®çæ
ããããã£ãæããªã空ã®ãªãã¸ã§ã¯ãã¯ãä¸è¨ã®ããã«ä¸æ¬å¼§ãè¨è¿°ãããã¨ã§çæããã¾ãã
ãããããªãã©ã«è¨æ³ãåæååè¨æ³ã®å©ç¹ã¯ã䏿¬å¼§å
ã«ããããã£ããã¤ãªãã¸ã§ã¯ããç°¡æ½ã«çæã§ããç¹ã§ãã key: value
ã®çµãã«ã³ãã§åºåã£ããªã¹ãã§è¨è¿°ãããã¨ãã§ãã¾ãã
以ä¸ã®ã³ã¼ãã§ã¯ã "foo"
ã"age"
ã"baz"
ã® 3 ã¤ã®ããããã£ããã¤ãªãã¸ã§ã¯ããçæãã¾ãããããã®ãã¼ã®å¤ã¯ãããããæååã® "bar"
ãæ°å¤ã® 42
ãããã¦ä»ã®ãªãã¸ã§ã¯ãã§ãã
const object = {
foo: "bar",
age: 42,
baz: { myProp: 12 },
};
ããããã£ã¸ã®ã¢ã¯ã»ã¹
ãªãã¸ã§ã¯ããçæããã¨ãèªã¿åã£ãã夿´ãããããããªãã§ãããããªãã¸ã§ã¯ãã®ããããã£ã«ã¯ããããè¨æ³ã¾ãã¯ãã©ã±ããè¨æ³ã§ã¢ã¯ã»ã¹ãããã¨ãã§ãã¾ããï¼è©³ç´°ã«ã¤ãã¦ã¯ãããããã£ã¢ã¯ã»ãµã¼ãã覧ãã ãããï¼
object.foo; // "bar"
object["age"]; // 42
object.baz; // {myProp: 12}
object.baz.myProp; //12
ããããã£ã®å®ç¾©
åæåæ§æã使ç¨ãã¦ããããã£ãè¨è¿°ããæ¹æ³ã«ã¤ãã¦æ¢ã«å¦ã³ã¾ãããå¤ãã®å ´åãã³ã¼ãå ã«ã¯ããªãã¸ã§ã¯ãã«è¨å®ããã夿°ãããã¾ããä¸è¨ã®ã³ã¼ããã覧ãã ããã
const a = "foo";
const b = 42;
const c = {};
const o = {
a: a,
b: b,
c: c,
};
åããã¨ãå®ç¾ããããã«å©ç¨ã§ããçãè¨æ³ãããã¾ãã
const a = "foo";
const b = 42;
const c = {};
// ç¥è¨ããããã£å
const o = { a, b, c };
// In other words,
console.log(o.a === { a }.a); // true
éè¤ããããããã£å
ããããã£ã«å¯¾ãã¦åãååã使ç¨ããã¨ããäºçªç®ã®ããããã£ã¯æåã®ããããã£ã䏿¸ããã¾ãã
const a = { x: 1, x: 2 };
console.log(a); // {x: 2}
ES2015 以éã峿 ¼ã¢ã¼ããå«ãããããå ´æã§ããããã£åã®éè¤ã許ãããããã«ãªãã¾ãããã¾ããã¯ã©ã¹å ã§ããããã£åã®éè¤ãä¿æãããã¨ãã§ãã¾ãããã ãããã©ã¤ãã¼ãè¦ç´ ã ãã¯ä¾å¤ã§ãã¯ã©ã¹æ¬ä½ã§åºæã®ããããã£ã§ãªããã°ãªãã¾ããã
ã¡ã½ããã®å®ç¾©ãªãã¸ã§ã¯ãã®ããããã£ã¯é¢æ°ãã²ãã¿ã¼ã¡ã½ãããã»ãã¿ã¼ã¡ã½ãããåç §ãããã¨ãã§ãã¾ãã
const o = {
property: function (parameters) {},
get property() {},
set property(value) {},
};
ç¥è¨æ³ãå©ç¨å¯è½ã§ãã®ã§ããã¼ã¯ã¼ã "function
" ã¯å¿
è¦ãªããªãã¾ããã
// ã¡ã½ããåã®ç¥è¨æ³
const o = {
property(parameters) {},
};
ã¸ã§ãã¬ã¼ã¿ã¼é¢æ°ã§ããããããã£ãç°¡æ½ã«å®ç¾©ããæ¹æ³ãããã¾ãã
const o = {
*generator() {
// â¦
},
};
ãã㯠ES5 ã®ãããªè¨æ³ã¨åãã§ãï¼ãã ãã ES5 ã«ã¯ã¸ã§ãã¬ã¼ã¿ã¼ããªããã¨ã«æ³¨æãã¦ãã ããï¼ã
const o = {
generator: function* () {
// â¦
},
};
ã¡ã½ããã®è©³ç´°ãä¾ã«ã¤ãã¦ã¯ãã¡ã½ããå®ç¾©ãã覧ãã ããã
è¨ç®ããããã£åãªãã¸ã§ã¯ãåæååæ§æã§ããè¨ç®ããããã£åã«å¯¾å¿ãã¾ããè§æ¬å¼§ []
ã®ä¸ã«å¼ãè¨è¿°ãããã¨ãã§ãããããè¨ç®ããã¦ããããã£åã¨ãã¦ä½¿ç¨ããã¾ããããã¯ãããããã£ã®èªã¿è¾¼ã¿ã¨è¨å®ã«ä½¿ç¨ãããã¨ã®ãããããããã£ã¢ã¯ã»ãµã¼æ§æã®ãã©ã±ãã表è¨ã彷彿ã¨ããããã®ã§ãã
ä»ã§ã¯ããªãã¸ã§ã¯ããªãã©ã«ã§ãåæ§ãªæ§æã使ããã¨ãã§ãã¾ãã
// è¨ç®ããããã£å
let i = 0;
const 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"
const param = "size";
const config = {
[param]: 12,
[`mobile${param.charAt(0).toUpperCase()}${param.slice(1)}`]: 4,
};
console.log(config); // {size: 12, mobileSize: 4}
ã¹ãã¬ããããããã£
ãªãã¸ã§ã¯ããªãã©ã«ã¯ã¹ãã¬ããæ§æã«å¯¾å¿ãã¦ãã¾ããããã¯ãæå®ããããªãã¸ã§ã¯ãããæ°ãããªãã¸ã§ã¯ãã«èªåèªèº«ã§åæå¯è½ãªããããã£ãã³ãã¼ããã¾ãã
Object.assign()
ã使ããããçãã³ã¼ãã§ prototype
ãé¤ããã·ã£ãã¼ã¯ãã¼ã³ã®ä½æãããã¼ã¸ãããªãã¸ã§ã¯ãã®ä½æãæ¸ããã¨ãã§ãã¾ãã
const obj1 = { foo: "bar", x: 42 };
const obj2 = { foo: "baz", y: 13 };
const clonedObj = { ...obj1 };
// { foo: "bar", x: 42 }
const mergedObj = { ...obj1, ...obj2 };
// { foo: "baz", x: 42, y: 13 }
è¦å: Object.assign()
ã¯ã»ãã¿ã¼ãèµ·åãã¾ãããã¹ãã¬ããæ§æã¯èµ·åãã¾ããã
__proto__: value
å½¢å¼ãã¾ã㯠"__proto__": value
å½¢å¼ã§ããããã£ãå®ç¾©ãã¦ãã __proto__
ã¨ããåããã¤ããããã£ãçæãã¾ããã代ããã«ãä¸ããããå¤ããªãã¸ã§ã¯ãã¾ã㯠null
ã®å ´åããã®å¤ã«çæããããªãã¸ã§ã¯ãã® [[Prototype]]
ã夿´ãã¾ãï¼ãã®å¤ããªãã¸ã§ã¯ããã¾ã㯠null
ã§ã¯ãªãå ´åããªãã¸ã§ã¯ãã¯å¤æ´ããã¾ããï¼ã
__proto__
ãã¼ã¯æ¨æºåãããæ§æã§ãããæ¨æºå¤ã§ããã©ã¼ãã³ã¹ã®ä½ã Object.prototype.__proto__
ã¢ã¯ã»ãµã¼ã¨ã¯å¯¾ç
§çã§ãããã¨ã«æ³¨æãã¦ãã ããããããã¿ã¤ããã§ã¼ã³ã夿´ãã代ããã«ã Object.create
ã¨åæ§ã«ãªãã¸ã§ã¯ã使æã« [[Prototype]]
ãè¨å®ãã¾ãã
const obj1 = {};
console.log(Object.getPrototypeOf(obj1) === Object.prototype); // true
const obj2 = { __proto__: null };
console.log(Object.getPrototypeOf(obj2)); // null
const protoObj = {};
const obj3 = { "__proto__": protoObj };
console.log(Object.getPrototypeOf(obj3) === protoObj); // true
const obj4 = { __proto__: "not an object or null" };
console.log(Object.getPrototypeOf(obj4) === Object.prototype); // true
console.log(Object.hasOwn(obj4, "__proto__")); // false
ãªãã¸ã§ã¯ããªãã©ã«ã§ã¯ãåä¸ã®ãããã¿ã¤ãã»ãã¿ã¼ã®ã¿ã許å¯ããã¦ãã¾ããããªãã¡ãè¤æ°ã®ãããã¿ã¤ãã»ãã¿ã¼ãããã¨æ§æã¨ã©ã¼ã«ãªãã¾ãã
ãã³ãã³ãè¡¨è¨æ³ã使ç¨ããªãããããã£å®ç¾©ã¯ããããã¿ã¤ãã»ãã¿ã¼ã«ã¯ãªãã¾ãããä»»æã®ä»ã®åç§°ã使ç¨ããåæ§ã®å®ç¾©ã¨åãããã«åä½ããããããã£å®ç¾©ã§ãã
const __proto__ = "variable";
const obj1 = { __proto__ };
console.log(Object.getPrototypeOf(obj1) === Object.prototype); // true
console.log(Object.hasOwn(obj1, "__proto__")); // true
console.log(obj1.__proto__); // "variable"
const obj2 = { __proto__() { return "hello"; } };
console.log(obj2.__proto__()); // "hello"
const obj3 = { ["__proto__"]: 17 };
console.log(obj3.__proto__); // 17
// ãããã¿ã¤ãã»ãã¿ã¼ã¨ "__proto__" ãã¼ã«ããé常ã®èªåèªèº«ã®ããããã£ã®æ··å
const obj4 = { ["__proto__"]: 17, __proto__: {} }; // {__proto__: 17} (with {} as prototype)
const obj5 = {
["__proto__"]: 17,
__proto__: {},
__proto__: null, // SyntaxError: è¤æ°ã® __proto__ ãã£ã¼ã«ãã¯ãªãã¸ã§ã¯ããªãã©ã«ã§ã¯è¨±å¯ããã¦ããªã
};
const obj6 = {
["__proto__"]: 17,
["__proto__"]: "hello",
__proto__: null,
}; // {__proto__: "hello"} (null ãããã¿ã¤ã)
const obj7 = {
["__proto__"]: 17,
__proto__,
__proto__: null,
}; // {__proto__: "variable"} (null ãããã¿ã¤ã)
仿§æ¸ ãã©ã¦ã¶ã¼ã®äºææ§ é¢é£æ
å ±
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