this의 값은 함수가 호출될때 결정됩니다.const car ={
name : 'KIA',
getName: function(){
console.log("car getName", this) //car객체가 나온다.
}
}
car.getName(); // A가 b를 불렀다
const globalCar = car.getName;
globalCar() //window나옴. b가 그냥 불렸음..밖에서 불렀는지, 밖에서 호출. 그래서 window가 불렀음
const car2 = {
name : 'hyundai',
getName: car.getName
}
car2.getName() //{name : 'hyundai',getName: car.getName}
//호출하는 애가 this가 된다.
const btn = document.getElementById("button");
btn.addEventListener("click", car.getName;);
//버튼 태그 그 자체가 나왔다. 버튼이 호출한거여~ this = 버튼이다.
const car2 = {
name : 'hyundai',
getName: car.getName
}
const bindGetName = car2.getName.bind(car) // KIA차가 나옴
//bind를 통해 값을 고정 가능.
const btn = document.getElementById("button");
btn.addEventListener("click", car.getName.bind(car););
//KIA로 바뀜
test
const testCar = {
name: "benz",
getName: function(){
console.log("getname", this);
const innerFunc = function () {
console.log("innerFunc", this); //window
};
innerFunc(); //앞에 부르는게 없다.
},
};
testCar.gerName();
const testCar = {
name: "benz",
getName: function(){
console.log("getname", this);
const innerFunc = () =>
console.log("innerFunc", this); //testCar
};
innerFunc(); //앞에 부르는게 없다.
},
};
testCar.gerName();
test
const ageTest = {
unit:'살',
ageList:[10, 20, 30],
getAgeList: function(){
const result = this.ageList.map((age)=>{
return age + this.unit;
});
console.log(result)
}
}