Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- className
- gird-row-end
- CSS
- box-shadow
- classList
- relative
- package.json
- variables
- collapsing-margins
- createElement
- javascript
- var
- confirm()
- scope
- css#cascading#display#block#inline
- grid-column-start
- grid-row-start
- valuable
- prompt()
- grid-template-areas
- localStorage
- Grid
- React
- foreach()
- javascipt
- react-hook-form
- grid-column-end
- python #qqplot #qq-plot #code
- border-style
- mongodb
Archives
- Today
- Total
data life
[JavaScript] 객체 본문
객체
1️⃣ 객체 생성
2️⃣ 프로퍼티 열거
3️⃣ 프로퍼티 조작
4️⃣ 프로퍼티 접근자
5️⃣ 인스턴스
6️⃣ 생성자
1️⃣ 객체 생성
- 싱글 리터럴 객체
const obj = {
property : "value",
method : function() { //객체가 함수 속성을 갖게되면 method라 불림
}
}
- 생성자 함수
function obj(name){
this.name = name;
}
>> new와 함께 쓰임
const NewObj = new obj('홍길동');
// NewObj { name : '홍길동' }
- Object.create 메소드 이용
const NewObj = Object.create(프로토타입, 객체서술자);
📌 객체서술자란 다음과 같다
const NewObj = Object.create(
Object.prototype,
{
name : {
value: '홍길동',
writable: true, //덮어쓸 수 있는가
enumberable: true, //열거할 수 있는가
configurable: true, //객체 서술자를 수정할 수 있는가
},
},
);
NewObj
//{ name : '홍길동' }
//writable이 false일 경우
NewObj.name = '도날드'
NewObj
//{ name : '홍길동' }
2️⃣ 프로퍼티 열거
const obj = {
prop1 : value1,
prop2 : value2,
prop3 : value3,
prop4 : value4
};
- for in 문
✅ 객체의 key를 열거할 수 있다
for (const key in obj){
console.log(key);
}
// prop1, prop2, prop3, prop4
✅ 객체의 value를 열거할 수 있다
obj.prop1 //value1
obj[prop2] //value2
for(const key in obj){
console.log(obj[key]);
}
//value1, value2, value3, value4
3️⃣ 프로퍼티 조작
const person = {
firstName : '홍',
location : 'korea',
};
새로운 프로퍼티 추가
person.lastName = '길동';
person
//{ firstName: '홍', location: 'korea', lastName: '길동'}
//수정도 가능
person.lastName = '길순';
person
//{ firstName: '홍', location: 'korea', lastName: '길순'}
❓ const인데 왜 변경이 되는가
>> 재할당을 막을 뿐!
프로퍼티 삭제
delete person.location;
person
// {firstName: '홍', lastName: '길동'}
4️⃣ 프로퍼티 접근자
const person = {
firstName : 'hong',
lastName : 'gildong',
};
- getter
const person = {
firstName : 'hong',
lastName : 'gildong',
get seong() {
return this.firstName.toUpperCase(); //person.firstName과 동일
},
};
console.log(person.seong);
// HONG
- setter
const person = {
firstName : 'hong',
lastName : 'gildong',
set seong(newFirstName){
if(typeof newFirstName !== 'string'){
this.firstName = 'undefined name';
return;
}
this.firstName = newFirstName;
},
};
person.seong = 12345;
console.log(person.seong);
// undefined name
5️⃣ 인스턴스
const me = {
name: '홍길동',
age: 20,
location: 'korea',
};
const me2 = {
name: '홍길동',
age: 20,
location: 'korea',
}
위와 같이 이름만 다른 객체가 존재한다.
이 둘을 비교한 결과는 다음과 같다.
console.log(me === me2);
//false
❓ 둘의 객체 내용은 같은데 왜 같다고 하지 않는가
>> 자바스크립트는 객체의 내용이 아닌 메모리 주소로 비교하기 때문!
>> 즉, 인스턴스는 고유의 객체라고 할 수 있다.
6️⃣ 생성자
동일한 템플릿으로 여러 다른 내용을 가진 객체들을 생성하고 싶다면 생성자를 이용해보자
function Persone(name, age, location){
this.name = name;
this.age = age;
this.location = location
}
여기서 this는 생성될 인스턴스이다.
const me = new Person('홍길동', 20, 'korea');
me
// Person { name: '홍길동', age: 20, location: 'korea'}
요즘에는 잘 쓰이진 않음!
'Front-end > JavaScript' 카테고리의 다른 글
[JavaScript] 객체 복사 (0) | 2023.02.16 |
---|---|
[JavaScript] 배열 (0) | 2023.02.10 |
[JavaScript] DOM (0) | 2023.02.03 |
[JavaScript] 함수 (0) | 2023.02.01 |
[JavaScript] 값(Value)에 대해 알아보자 (0) | 2023.01.10 |