본문 바로가기
JavaScript

모던 JS 튜토리얼 정리 2

by watergrace2u 2020. 11. 12.
반응형
SMALL

객체 만드는 법

let user = new Object(); // '객체 생성자' 문법

let user = {}; // '객체 리터럴' 문법


** 상수 객체는 수정될 수 있다!! **

const user = {
  name: "John"
};

user.name = "Pete"; // (*)OK

alert(user.name); // Pete

계산된 프로퍼티(computed property)(cf. 대괄호 표기법)

let fruit = prompt("어떤 과일을 구매하시겠습니까?", "apple");

let bag = {
  [fruit]: 5, // 변수 fruit에서 프로퍼티 이름을 동적으로 받아온다.
};

alert( bag.apple ); // fruit에 "apple"이 할당되었다면, 5가 출력.
// 위 예시와 동일하게 동작
// 더 깔끔함
let fruit = prompt("어떤 과일을 구매하시겠습니까?", "apple");
let bag = {};

// 변수 fruit을 사용해 프로퍼티 이름을 만들었습니다.
bag[fruit] = 5;

Object.assign(목표로 하는 객체, 복사하고자 하는 객체...) -> 얕은 복사

let user = { name: "John" };

let permissions1 = { canView: true };
let permissions2 = { canEdit: true };

// permissions1과 permissions2의 프로퍼티를 user로 복사한다.
Object.assign(user, permissions1, permissions2);

// now user = { name: "John", canView: true, canEdit: true }

메서드와 this

let user = {
  name: "John",
  age: 30,
  sayHi() {
    // 'this'는 '현재 객체'를 나타낸다.
    alert(this.name);
  }
};

user.sayHi(); // John

동일한 함수라도 다른 객체에서 호출했다면 'this'가 참조하는 값이 달라진다.

let user = { name: "John" };
let admin = { name: "Admin" };

function sayHi() {
  alert( this.name );
}

// 별개의 객체에서 동일한 함수를 사용함
user.f = sayHi;
admin.f = sayHi;

// 'this'는 '점(.) 앞의' 객체를 참조하기 때문에
// this 값이 달라짐
user.f(); // John  (this == user)
admin.f(); // Admin  (this == admin)

admin['f'](); // Admin (점과 대괄호는 동일하게 동작함)

this가 없는 화살표 함수

let user = {
  firstName: "보라",
  sayHi() {
    let arrow = () => alert(this.firstName);
    arrow();
  }
};

user.sayHi(); // 보라

 

반응형
LIST

'JavaScript' 카테고리의 다른 글

모던 JS 튜토리얼 정리 1  (0) 2020.11.12
[JS] apply 사용  (0) 2020.10.28
[JS] 클로저 주의사항  (0) 2020.10.28
[JS] Fetch API 사용하기  (0) 2020.10.05
[JS] async와 await 이해  (0) 2020.10.05

댓글