TIL] JavaScript-Object(객체)
💎 Object(객체)
연관된 함수/ 연관된 변수
들을 grouping하여 정리하는 역할
로 사용하는데 일종의 폴더
역할로 이해하면 된다. 객체는 ①{}(중괄호)
로 감싸져 있고 ② 콜론(:)
으로 구분된 key/value
쌍들이 ③,(쉼표)으로 분리
된 목록의 형태이다.(property의 이름을 중복될 수 없다.)
객체의 key에는 space, 한글, 특수문자
등이 들어갈 수 있다. 만약 key 값에 특수문자가 없다면 ' '를 생략
하고 key값을 쓸 수 있다.
let difficult = {
'my name': 'boong',
color: 'silver',
키: '한글인 키는 따옴표가 없어도 되는군!!',
'!키': '느낌표 있는 키는 따옴표가 필요하군',
$special: '$는 없어도 되는군'
};
- 보통 . notation은 obj 안에 정확한 key 값의 value가 있을 때 사용하고 실시간으로 key 값의 정보를 받아야하는 경우에는 [] notaion을 사용한다.
function printValue(obj, key) {
console.log(obj.key); // ›undefined → obj에 key라는 property가 있는지 확인
console.log(obj[key]; // ›ellie
}
printValue(ellie, 'name');
🚛 객체 접근 방법
dot(.) notation
:속성 값
들 혹은내장 객체
에접근할 때 사용
하며,존재하지 않는 속성
에 접근하려고하면undefined
가 return 된다.숫자로 시작
하는속성/변수형태
의 속성은구분할 수 없다
.
[예시]
OK › obj.prop_1, obj.prop$
Not OK › obj.1prop, obj.prop name
bracket([]) notation
: dot notation과 같이 객체 접근시 사용한다. dot과 다르게white space
혹은 string 형태의특수문자 형태에도 접근이 가능
하고,숫자로 시작하는 속성/변수
도 구분할 수 있다.변수에 접근
하고 싶을 때는""
와 함께 bracket notation을 사용한다.
[예시]
OK — obj["1prop"], obj["prop name"]
let plan1 = {
name: "Basic"
};
let propertyName = "name";
console.log(plan1[propertyName]);
console.log(propertyName);
›Basic
›name
🚙 객체의 key 추가 및 삭제
속성 추가
:=
을 통해서객체를 추가(key=value 형태)
하거나 기존의속성들을 바꿀 수 있다
. 만약 이미 객체에있던 속성
이라면새로운 값
으로 대체될 수 있고,없던 속성
이라면 객체에새롭게 추가
될 수 있다.
const spaceship = {type: 'shuttle'};
spaceship = {type: 'alien'};
› TypeError: Assignment to constant variable.
spaceship.type = 'alien';
› spaceship = {type: "alien"};
spaceship.speed = 'Mach 5';
› spaceship = {type: "alien", speed: "Mach 5"};
속성 삭제
:delete operator
를 통해 객체의 속성을 삭제할 수 있다.
const spaceship = {
'Fuel Type': 'Turbo Fuel',
homePlanet: 'Earth',
mission: 'Explore the universe'
};
delete spaceship.mission;
spaceship;
›{type: "alien", speed: "Mach 5"}
🚖 객체의 생성
- Property value shorthand
const person1 = { name: 'bob', age: 2 };
const person2 = { name: 'steve', age: 3};
const person3 = new Person('ellie, 30);
- Constructor
function Person(name, age) {
// this = {}; 이 생략됨
this.name = name;
this.age = age;
// return this; 생략됨
}
🚨 객체는 reference로 저장된다.
객체를 변수에 저장
하면 객체 literal 자체가 저장된는게 아니라 reference가 저장
된다. text는
변수에 저장하면 text 자체가 저장되기 때문에 변수명이 달라도 text 값이 같으면 서로 같다(true)고 표현
한다. 하지만 객체는 저장할 때 객체 자체를 저장하는 것이 아니기 때문에 객체의 변수끼리 같은지를 비교하면 서로 같지 않은(false)것으로 인식
한다. 하지만 객체 내부의 프로퍼티 값끼리 비교
할 때는 같음/다름
여부를 판단할 수 있다.
🚚 객체 순회하기
객체는 순서가 없고 키를 통해서만 접근이 가능
하다. 하지만 여러가지 이유로 객체에 있는 모든 키에 한번씩 접근해야하는 코드를 써야한다면 가능한 방법이 있다. 다만 명확하게 정해진 순서가 없기 때문에 객체의 순회는 '순서가 보장되자 않은 순회'
라고 한다.
①Object.keys(객체이름)
: 어떤 객체
가 가지고 있는 키들의 목록
을 배열로 return
하는 method이다.
②Object.values(객체이름)
: 어떤 객체
가 가지고 있는 값들의 목록
을 배열로 return
하는 method이다.
③Object.entries(객체이름)
: 어떤 객체
가 가지고 있는 키:값 형태의 객체를
을 2열짜리 배열로 return
하는 method이다.
const obj = {
name: 'melon',
weight: 4350,
price: 16500,
isFresh: true
}
Object.keys(obj) // ['name', 'weight', 'price', 'isFresh']
›["name", "weight", "price", "isFresh"]
🍿 객체를 순환하는 for-in문
const arr = ['coconut', 'banana', 'pepper', 'coriander']
for (let i in arr) {
console.log(i)
console.log(arr[i])
}
🚌 객체 복제하기
- Fun cloning: Object.assign(dest, [obj1, obj2, obj3...])
user = { name: 'ellie', age: 20 };
const user4 = Object.assign({}, user);
console.log(user4);
› { name: 'ellie', age: 20 }
const fruit1 = { color: 'red' };
const fruit2 = { color: 'blue', size: 'big' };
const mixed = Object.assign({}, fruit1, fruit2};
// 값이 중복되는게 있다면 뒤의 객체가 앞의 객체 value를 덮어쓴다.
console.log(mixed.color);
console.log(mixed.size);
›blue
›big
Author And Source
이 문제에 관하여(TIL] JavaScript-Object(객체)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@link717/TIL-JavaScript-Object객체저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)