const copy = {};
let sum = 0;
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
sum += copy[key] = obj[key] * 2;
}
}
위의 코드에서는 왜 hasOwnProperty를 사용할까?
왜냐하면 프로토타입 체인을 통해 새로운 값을 추가적인 property를 만드는 경우 원치 않는 결과가 발생할 수 있기 때문!
누군가가 다음 코드를 새로 추가했다고 하자
Object.prototype.toText = function() {...}
그러면 반복문에 hasOwnProperty를 사용하는 부분이 없다면 toText 값이 sum에 더해져 문제가 발생할 수 있다!
for (let key in obj) {
sum += copy[key] = obj[key] * 2;
}
sum => NaN
'개발 > JS' 카테고리의 다른 글
[JS] 이메일 정규식 (0) | 2019.11.16 |
---|---|
[Cypress] Cypress 사용하여 Express로 만든 웹 서버 테스트 해보기 (0) | 2019.09.15 |
[Jest] describe (0) | 2019.09.14 |
[NodeJS] EventEmitter (0) | 2019.08.24 |
[JS] 웹 워커 (Web Worker) (0) | 2019.08.24 |