gwooden_코린이
자바스크립트js 메서드 본문
728x90
let user = {
name : 'kim',
age : 30,
//아래 두 메서드는 같은 의미
/*
msg : function() {
console.log('gd');
}
msg() {
console.log('gd')
}
*/
};
function msg() {
console.log('hhhiii');
}
user.msg = msg;
//유저라는 오브젝트 안에 메서드를 넣은 것
/*
user.msg = function() {
console.log('hi');
};
user.msg();
*/
console.log(this.name) :
그냥 this라고 하면 user 오브젝트를 가리키는것, this.name 또는 user.name 이라 하면 name키값 안에 있는 벨류값을 가리킨다.
let user = {
name : 'kim',
age : 30,
msg() {
console.log(this.name);
}
};
user.msg();
user 오브젝트를 aa 오브젝트에 통째로 대입했고 기존 user 오브젝트 안에 있는 msg() 메서드가 콘솔로그(this.name)에 기능을 포함하고 있어 aa.msg로 결과값을 확인하면 name 키값 안에 있는 value값인 'kim'이 보이게 된다.
let user = {
name : 'kim',
age : 30,
msg() {
console.log(this.name)
}
};
let aa = user;
user = null;
aa.msg();
this는 무척 동적이라 어디에 넣어지는지에 따라 가리키는 대상이 달라진다.
let a = {
name : 'kim',
};
let b = {
name : 'pack',
};
function msg() {
console.log(this.name);
}
a.func = msg;
b.func = msg;
a.func();
b.func();
- 복사
let a = {
name: 'kim',
};
let b = a;
a.name = 'park'
console.log(b.name);
a 오브젝트에 name 키값에 value값을 'kim'에서 'park'으로 변경해도
b라는 별도 오브젝트에 key값과 value값이 같은걸 공유해서 하는게 아닌 별도로 다른 주소? 공간?이 만들어져서 연결되어있지 않다.
let a = {
name: 'kim',
age: 30,
};
//비어있는 객체
let b = {};
//반복문을 이용해 b 오브젝트에 a 오브젝트에 있는 key와 value를 복사해준다.
for(let key in a) {
b[key] = a[key];
}
// a 오브젝트에 name 키값에 value값을 'kim'에서 'park'으로 변경해도
// b라는 별도 오브젝트에 key값과 value값이 같은걸 공유해서 하는게 아닌 별도로 다른 주소? 공간?이 만들어져서 연결되어있지 않다.
a.name = 'park'
console.log(b);
console.log(a);
Object.assign 해당 함수를 이용해서 b라는 오브젝트안에 a 오브젝트에 있는 객체를 복사해준다.
let a = {
name: 'kim',
age: 30,
};
let b = Object.assign({},a);
a.name = 'park'
console.log(b);
console.log(a);
let a = {
name: 'kim',
age: 30,
};
let b = Object.assign({score:30, math:50},a);
a.name = 'park'
console.log(b);
console.log(a);
728x90
'프론트엔드 > 자바스크립트' 카테고리의 다른 글
제이쿼리 기능 적용 및 nodejs 적용하기 (0) | 2022.12.23 |
---|---|
자바스크립트js DOM (0) | 2022.12.23 |
자바스크립트js Object 객체 (0) | 2022.12.22 |
자바스크립트js 화살표 함수 (람다) (0) | 2022.12.22 |
자바스크립트js 함수(메서드) (0) | 2022.12.22 |
Comments