💡 Object에 대해서 자세히 공부해보자
const name = 'ellie';
const age = 4;
print(name, age);
function print(name, age) {
console.log(name);
console.log(age);
}
const ellie = {name: 'ellie', age:4};
function print(person) {
console.log(person.name);
console.log(person.age);
}
print(ellie);
// ellie 출력
// 4 출력
ellie
만 전달하면 되서 간편하게 데이터를 관리할 수 있음{}
)을 이용해서 만들 수도 있고, new
라는 키워드를 이용해서 오브젝트를 생성 할 수 있음const obj1 = {}; // 1. 'object literal' syntax
const obj2 = new Object(); // 2. 'object constructor' syntax
object constructor
는 new키워드를 이용해서 생성하면 오브젝트에 정의된 constructor가 호출이 되서 저렇게 이름이 지어졌다.const ellie = { name: 'ellie', age: 4 };
// key : name, age
// value : ellie, 4
ellie
라는 Object는 2가지의 키와 그에 상응하는 value를 가지고 있는 것을 확인 할 수 있다..
: Object 안에 있는 데이터에 접근할 때는 우리가 .
을 이용해서 데이터에 접근한다.console.log(ellie.name); // ellie
[string]
: []
를 이용해서 name
이라는 string
-> Object 안에 있는 변수의 이름을 string
형태로 접근이 가능하다.console.log(ellie['name']); // ellie
Computed properties
: 배열에서 우리가 데이터를 받아오는 것처럼 접근이 가능하다.// Computed properties를 이용해 값을 줄 수 있다.
ellie['hasJob'] = true;
console.log(ellie.hasJob); // true
.
-> 코딩하는 그 순간 우리가 정말 그 키에 해당하는 값을 받아 오고 싶을 때 쓴다.Computed properties
-> 우리가 정확하게 어떤 키가 필요한지 모를 때, 즉 런타임에서 결정될 때 사용한다..
을 써서 코딩하면된다.Computed properties
를 쓰면 되는 것이다..
을 사용했을 때,function printValue(obj, key) {
console.log(obj.key);
}
printValue(ellie, 'name'); // undefined
obj.key
라고 하게 되면obj
에 key
라는 property가 들어있어? 없지? 그래 undefined 출력~Computed properties
를 쓰는 것이다.function printValue(obj, key) {
console.log(obj[key]);
}
printValue(ellie, 'name'); // ellie
printValue(ellie, 'age'); // 4
const person4 = makePerson('ellie', 30);
console.log(person4);
// {name: 'ellie', age: 30}
function makePerson(name, age) {
return {
name : name,
age : age,
}
}
makePerson
함수를 생성해서, 함수 안에서 object를 만들어서 return 해준다. function makePerson(name, age) {
return {
name,
age,
// 이런식으로 작성해도 오브젝트가 생성될 수 있음
}
}
Property value shorthand
라는 기능이 있어서makePerson
함수를 만들었던 것이다!!makePerson
함수는 Class, 즉 템플릿 같은 아이라고 볼 수 있다.makePerson
처럼 순수하게 다른 계산은 하지 않고 Object를 생성하는 함수들은 보통 대문자로 시작하도록 함수이름을 짓는다.function Person(name, age) {
return {
name,
age,
}
}
return
을 쓰지 않고,function Person(name, age) {
// this = {};
this.name = name,
this.age = age,
// return this;
}
const person5 = new Person('yewon', 25);
// Person {name: 'yewon', age: 25}
this
에다가 name
이라는 새로운 property를 넣고 결국은 이 this
를 return하는 함수인 것이다.Constructor Function
!!!!!!!!!!!in
: 해당하는 Object 안에 key가 있는지 없는지 확인할 수 있는 키워드이다.console.log('name' in ellie); // true
console.log('age' in ellie); // true
console.log('random' in ellie); // false
// false인 key의 value를 확인해보면 undefined가 출력되는 것을 볼 수 있다.
console.log(ellie.random); // undefined
for (key in obj)
for (let key in ellie) {
console.log(key);
// name
// age
// hasJob
}
ellie
안에 있는 모든 key
들이 출력되어진다.value of iterable
const array = [1, 2, 4, 5]; // 순차적으로 데이터가 담겨있는 데이터가 있다.
// for (let i =0 ; i< array.length ; i++) {}
for (let value of array) {
console.log(value);
// 1
// 2
// 4
// 5
}
array
안에 있는 모든 값들이 value
에 할당 되면서 블럭 안에서 순차적으로 출력됨const user = { name: 'ellie', age: '20' };
const user2 = user;
user2.name = 'coder'
console.log(user2);
user
라는 오브젝트가 있고, user2
는 user
reference의 값을 참조하고 있다.user
의 name 값은 어떻게 되어있을까?// 1. 텅텅 비어진 오브젝트를 생성
const user3 = {};
// 2. for in을 사용해서 오브젝트를 loop하면서 메뉴얼적으로 수동적으로 할당하는 방법
for (let key in user) {
user3[key] = user[key];
}
console.log(user3);
// 결과 : user의 값들이 복사되어져서 나옴
// {name: 'coder', age: '20'}
assign
을 쓰는 방법이 있다.const user4 = {};
Object.assign(user4, user);
// target : user4 , source : user
console.log(user4);
const user4 = Object.assign({}, user);
// target : {}: 텅텅비어진 오브젝트 , source : user
console.log(user4);
const fruit1 = { color: 'red' };
const fruit2 = { color: 'blue', size: 'big' };
const mixed = Object.assign({}, fruit1, fruit2);
console.log(mixed.color); // blue
console.log(mixed.size); // big
➕ 더 찾아보고, 공부하기
1.console.clear();
하면 콘솔창 정리할 수 있음
2. for in, for of 공부하기
3. class, 객체지향언어
4. object mdn 사이트 들어가서 꼭 공부하기