Object
21059 ワード
Objectとは?
const obj1 = {}; // object literal
const obj2 = new Object(); // object constructor
function print(person) {
console.log(person.name);
console.log(person.age);
}
const ellie = { name: 'ellie', age: 4 };
print(ellie);
ellie.hasJob = true; // 선언 후 속성을 추가할 수 있음(javascript는 runtime시 type이 결정되는 언어)
console.log(ellie.hasJob); // true
delete ellie.hasJob;
console.log(ellie.hasJob); // undefined
Computed properties
Instanceのfieldをインポートする場合、
instance['field']
をインポートできます.キーが不確定で実行時に決定された場合、objectのキーを動的に取得する必要がある場合はcomputed propertyを使用します.
配列されたキーはstringであるべきです.
console.log(ellie.name); // ellie
console.log(ellie.['name']); // ellie(computed properties)
ellie['hasJob'] = true;
console.log(ellie.name); // true
function printValueDot(obj, key) {
console.log(obj.key);
}
function printValueComputed(obj, key) {
console.log(obj[key]); // computed key
}
printValueDot(ellie, 'name'); // undefined
printValueComputed(ellie, 'name'); // ellie
Property value shorthand
同じ構造のオブジェクトがある場合はfunctionを使用してobjectを作成し、戻ります.
keyはパラメータ名と同時に、
name(key): name(argument),
をname,
と簡単に表すことができる.classが存在しない場合にオブジェクトを作成するツールとして使用
const person1 = { name: 'bob', age: 2 };
const person2 = { name: 'steve', age: 3 };
const person3 = makePerson('ellie', 30);
function makePerson(name, age) {
return {
name,
age,
};
}
Constructor Function
const person4 = new Person('jason', 26);
function Person(name, age) {
this.name = name,
this.age = age,
}
In operator
オブジェクトに鍵が含まれていることを確認します
console.log('name' in ellie); // true
console.log('random' in ellie); // false
For..in vs For..of
for key in obj
for (key in ellie) {
console.log(key); // name, age, hasJob
}
for value of iterable
const array = [1, 2, 4, 5];
for(let i = 0; i < array.length; i++) {
console.log(array[i]); // 1, 2, 4, 5
}
for (value of array) {
console.log(value); // 1, 2, 4, 5
}
Object api
Object.keys
objectのすべてのキー値を配列で返します.
let obj = { name: "SingCo", age: 26 };
let keys = Object.keys(obj);
console.log(keys); // [ 'name', 'age' ]
Object.values
objectのすべての値を配列形式で返します.
let obj = { name: "SingCo", age: 26 };
let values = Object.values(obj);
console.log(values); // [ 'SingCo', 26 ]
Object.entries
objectのすべてのkeyとvalueを2 D配列形式に戻します.
let obj = { name: "SingCo", age: 26 };
let entries = Object.entries(obj);
console.log(entries); // [ [ 'name', 'SingCo' ], [ 'age', 26 ] ]
Object.assign
arrayをobjectに変換します.
let arr = ['하', '이', '루'];
let obj = Object.assign({}, arr);
console.log(obj)
// {'0': '하', '1':'이', '2':'루'}
Cloning
objectはreferenceをメモリに格納し、referenceはフィールドを指します.
通常のレプリケーションではなく、同じフィールドを参照する変数のみが作成されます.
objectTemp = object
において、objectTempは、同じフィールドを指すobjectと同じ参照を有する.const user = { name: 'ellie', age: 20 };
const user2 = user;
user2.name = 'coder';
console.log(user.name); // coder
ダイレクトコピー
フィールド単位で直接コピーします.
const user3 = {};
for (key in user) {
user3[key] = user[key];
}
浅い複製(Shallow Clone)
const user4 = {};
Object.assign(user4, user);
const user5 = Object.assign({}, user);
Reference
この問題について(Object), 我々は、より多くの情報をここで見つけました https://velog.io/@singco/ES6-Objectテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol