gwooden_코린이

자바스크립트js 메서드 본문

프론트엔드/자바스크립트

자바스크립트js 메서드

gwooden22 2022. 12. 23. 10:17
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
Comments