프론트엔드/Javascript
Javascript method
infitry
2023. 4. 2. 23:58
반응형
Javascript 에서 다음과 같이 메서드를 표현할 수 있다.
예를 들어 user라는 객체를 만들고 이름을 바꾸는 메서드를 선언해 보면
function
const user = {
name: '',
changeName: function(name) {
this.name = name
}
}
function 축약법
const user = {
name: '',
changeName(name) {
this.name = name
}
}
화살표 함수
const user = {
name: '',
changeName: (name) => {
User.name = name
}
}
단 화살표 함수의 경우 메서드 안에서 this를 사용하게 되면, 상위 스코프의 this를 가져오기 때문에 메서드로 화살표 함수를 쓰는 것은 좋지 않다.
예를 들어 다음과 같은 user2 객체가 있다면,
const user2 = {
name: '',
changeName(name) {
this.name = name
const func2 = () => {
console.log(this.name)
}
func2()
}
}
화살표 함수 안의 this.name 은 user2 객체의 name을 반환한다.
따라서 메서드를 화살표 함수로 사용한다면,
const user = {
name: '',
changeName: (name) => {
this.name = name
console.log(this)
}
}
this는 상위 스코프인 window 객체를 가져오게 된다.
결론
javascript 에서의 화살표 함수는 메서드 용도로는 좋지 않고 함수 안에서 함수를 정의하거나 this가 필요하지 않은 함수에 적합한 것 같다.👌
반응형