# spread Syntax / rest prameter

spread Syntax (opens new window)

둘다 뭔가를 전개하여 array 형식으로 전달 하는 것인데

spread Syntax 를 함수의 마지막 인자로 전달하는 것이 rest parameter다.

const f = (a, b, ...c) => { //마지막 파라미터만 Rest parameter로 전달 된다
  //
}

Optinal spreading ...falsy ...turety

...turety && { djlfk : twer, wert: klaejrt } // 전개 구문 펼처짐
...falsy || { djlfk : twer, wert: klaejrt } // 전개 구문 펼처짐

method: 객체 안에 정의된 함수, 객체를 통해서 호출되는 함수

let user = {
  name: "John",
  age: 30
};

user.sayHi = function() {
  alert("안녕하세요!");
};

user.sayHi(); // 안녕하세요!

단축 할 수 있습니다 (위 아래는 완전히 동일하진 않습니다. 객체 상속과 관련된 미묘한 차이가 존재하지만 동일하게 사용할 수 있습니다)

// 단축 구문을 사용하니 더 깔끔해 보이네요.
user = {
  sayHi() { // "sayHi: function()"과 동일합니다.
    alert("Hello");
  }
};

this : 매서드내부에서 this 키워드를 사용하면 객체에 접근할 수 있습니다.

this. : 이때의 디스는 객체를 나타냅니다. method를 호출할 때 사용된 객체입니다.

let user = {
  name: "John",
  age: 30,
  sayHi() {
    alert( user.name ); // Error: Cannot read property 'name' of null
  }
};

let admin = user;
user = null; // user를 null로 덮어씁니다.
admin.sayHi(); // sayHi()가 엉뚱한 객체를 참고하면서 에러가 발생했습니다.

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 (점과 대괄호는 동일하게 동작함)
© Devlog from jeong