"자신(own)의 속성(property)을 가지고(has)있는지 확인 방법"이 덮어쓰여질 수 있는 위험에 대처하는 안전한 방법은?
hasOwnProperty -> 객체에서 쓰면 훼손될 여지(함수로 정의해버린다던가)가 있으므로 조상에서 가져와서 쓴다. -> '빌려와서 쓴다' 개념 -> call 메서드 사용. -> call(a,b) a: 빌려쓸 객체 이름, b: 매개변수
Call -> 조상 아니더라도 쓸 수 있음. string 이 array의 능력을 쓰고 싶다던가. Array.prototype.forEach.call('hello', ()=>{})
for (let key in javaScript) {
if (Object.prototype.hasOwnProperty.call(javaScript, key)) {
console.log(javaScript[key]);
}
}
Object.defineProperty(Object.prototype, "nickName", {
enumerable: false,
});
for (let key in javaScript) {
console.log(javaScript[key]);
}
이터러블은 Symbol.iterator(이터러블 객체)가 구현된 객체이다. Symbol.iterator는 for...of 반복문 및 스프레드 연산자와 같은 기능을 제공하여 Array, Map, Set과 같은 기능을 제공하게 하는 프로토콜이다.
for in 은 잘 안 쓴다. -> 객체도 for of 로 쓴다. -> 근데 객체는 이터러블 아니잖아 -> 객체를 배열로 만들면 됨!
const keys = Object.keys(arrayLike);
for(let value of keys){
console.log(value);
}
