this 욕하려는 게 아니라, 프로그래밍 초보인데,
this 배우면서 느끼는 게 대체 이런거를 뭐할 때 쓸지 감이 좀 안 잡힘
호출 맥락에 따라 참조 대상이 바뀌는데,
호출하는 맥락?을 가리키는 일이 보통 어떨 때 있는지 잘 모르겠음.
'이런 경우에 this를 쓴다' 같은 예시가 있음?
this 욕하려는 게 아니라, 프로그래밍 초보인데,
this 배우면서 느끼는 게 대체 이런거를 뭐할 때 쓸지 감이 좀 안 잡힘
호출 맥락에 따라 참조 대상이 바뀌는데,
호출하는 맥락?을 가리키는 일이 보통 어떨 때 있는지 잘 모르겠음.
'이런 경우에 this를 쓴다' 같은 예시가 있음?
자기를 가리키는거임
thsisneverthat몰름?
ㅜㅜ
abc.method()할 때 method()안에서 this맥락은 abc임.
근데 만약에 method를 호출하는게 프레임워크라면 abc.method가 아니라 framework.method겠지? 그래서 그걸 방짛려고 this.method = this.method.bind(this) 이런걸 하긴 함.
아.. 프레임워크나 라이브러리의 함수에서 어떤 객체의 메소드를 호출할 시, 이 메소드의 this 참조 주소를 고정할 때, bind를 사용한다는 의미인 거 같은데, 대충 맞으려나. 그러면 this가 단독으로 사용되는 경우는 거의 없고 항상 바인드를 하겠네..?
보통은 귀찮으니 굳이 안함. 근데 프레임워크 호출, 이벤트 콜백에 들어가는 경우, 이런경우 스코프가 항상 호출자에게 잡히게되서 그런경우 bind를 처리해주긴 함.
this.listenTo(function () { } .bind(this)); or this.method = this.method.bind(this);
ㅇㅎ... ㄳㄳ 이런 걸 쓸 일이 얼른 왔으면 싶네
프로토타입같은거 정의할때 this 잘쓰임. 예를 들어서 string의 프로토타입 함수로 format을 정의하려고 할때 String.prototype.format = () => this.formatting(); 이런식으로 됨. 이러면 this가 무엇을 가르키게 되냐하면 format 메서드를 호출하는 인스턴스를 가르키게 됨. 예를 들어서 "{0:03d}".format(12)같은 경우 this가 "{0:03d}"의 레퍼런스를 가르키게 됨
무슨 말인지는 알것 같음. 그런데, 어떤 대상의 프로토타입으로 함수를 정의하고 거기서 this를 쓰는 거는 그냥 공용 함수 format() 같은 거 하나 만들고, 거기에 인자로 그 대상을 넣어주면 되는거아님? 예컨대 object1.prototype.customFunc()이 있으면, 이거 대신 customFunc을 하나 만들고 customFunc(object1) 로 호출하면 될 것 같은데, this가 익숙하지 않아서 그런가, 나는 뭔가 후자면 충분할 것 같은데 그래도 프로토타입을 사용하는 이유가 있겠지..?
저 메소드를 쓰기가 쉽지않지. 후자는 static method같은거고 전자는 instance method같은건데 static method는 별종으로 나와있는거고, 인자값도 다 챙겨줘야함. (예를들어서 customFunc안에 특정 상태값이 저장되어서 그걸로 해야하는거면 매번 함수 인자값으로 다 넣어줘야하는거지) instanceMethod는 인스턴스 안에 상태 저장되어있으므로 쓸수있잖어
object1.customFunc() vs cutsomFunc(object1) 전자가 코드가 훨씬 읽기쉬운데.
공용함수를 많이 만들다보면 유지보수가 점점 힘들어서 되도록이면 관련된 클래스에다가 다 묶어버림
아 그렇네. 익숙해지면 프로토타입 메소드가 더 편하겠구나
이해했음ㄳㄳ
대충 호출한 대상의 참조값이라 생각하면된다
자바스크립트 this는 참조대상의 속성값을 불러올때 많이씀 ㅇㅇ