Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Object.assign() : source에서 enumerable property들을 target에 할당 #29

Open
yejineee opened this issue Oct 2, 2021 · 0 comments
Labels

Comments

@yejineee
Copy link
Owner

yejineee commented Oct 2, 2021

Object.assign()

Object.assign(target, ...sources)
  • source에서 target으로 enumerbale한 속성을 할당한다.
  • target과 source가 같은 키를 갖는다면, source가 우선순위가 더 높으므로, source의 속성값으로 target에 덮어씌워진다.
  • target 객체를 반환한다.

예제 1 : enumerable한 값만 복사

const target = { a: 1, b: 2 };

const source = {};

Object.defineProperty(source, 'nonEnumerable', {
  value: 42,
  enumerable: false
});

Object.defineProperty(source, 'enumerable', {
  value: 42,
  enumerable: true
});

const returnedObject = Object.assign(target, source);
console.log(returnedObject); // > Object { a: 1, b: 2, enumerable: 42 }
console.log(target); // > Object { a: 1, b: 2, enumerable: 42 }
console.log(target === returnedObject) // true
  • enumerable이 false인 nonEnumerable 속성값은 target으로 할당되지 않은 것을 알 수 있다.
  • Object.assign()은 target 객체를 그대로 반환하므로, target === returnedObject는 true이다.

예제 2 : 키 충돌시, source 객체의 속성이 더 높은 우선순위

const target = { key: 'target value' };

const source = { key: 'source value' };

const returnedObject = Object.assign(target, source); 

console.log(returnedObject);  // > Object { key: "source value" }

브라우저 호환성

IE 언제 망해?
스크린샷 2021-10-02 오후 3 47 21

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant