
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
질문이 두가지가 있습니다.
작성한 코드 및 에러 메세지
var obj1 = {
name: "obj1",
func: function () {
var self = this; //이 부분!**
return function () {
console.log(self.name);
};
},
};
var obj3 = { name: "obj3" };
//그리고 아래랑 위랑은 무슨 차이야? (call, bind)
// //아랫 줄이 func는 되는데 func()는 안되는 이유가 뭐야?
setTimeout(obj1.func().call(obj3), 1000); //콘솔 결과 -> error
setTimeout(obj1.func.call(obj3), 1000); //콘솔 결과 ->obj3
setTimeout(obj1.func.call(obj3)(), 1000); //콘솔 결과 ->error
// 밑에 두개는 ()의 위치가 왜 차이가 나면서 왜 가리키는게 달라져?
setTimeout(obj1.func().bind(obj3), 1000); //콘솔 결과 ->obj1
setTimeout(obj1.func.bind(obj3), 1000); //콘솔 결과 ->아무것도 안뜸
setTimeout(obj1.func.bind(obj3)(), 1000); //콘솔 결과 ->obj3
