는이 코드가 있습니다액세스 외부 "이"자바 스크립트 정렬 방법
function some_object(...) {
this.data = {...};
this.do_something = function(...) {
var arr = [...];
arr.sort(function (a, b) {
return this.data[a] - this.data[b];
});
}
}
이 this
이 sort
에 액세스 할 수 없기 때문에 내 생각은 작동하지 않습니다하지만 - 다른 this
어떤 이유로 아닌 this
거기에 볼을 외부 물체를 감싸는 것.
어떻게해야합니까? 덕분에
감사하지만,이 자바 스크립트에서 허용 방법? 솔직히 못생긴 해킹처럼 보입니다 :-) – zaharpopov
왜 "do_something"이 클로저를 만드는 걸까요? do_somethiing에서'this'를 출력하면 올바른 객체를 얻을 수 있습니다. – zaharpopov
아니요, 해킹이 아닙니다. 다른 방법은 'this'가 함수에 바인딩되어 있다는 것을 구체적으로 설정하는 것입니다. 그러나,이 경우,'arr.sort' 메쏘드는 호출을하고,'this'가 무엇을 의미하는지 설정할 기회가 없습니다. 시나리오와 같은 객체에서, 나는 실제로'var base = this; '를 맨 위에 선언하고 함수의 범위 내에서 그 객체를 참조하기 위해서만'base'를 사용합니다. 그렇게하면'this'와'base'를 언제 사용해야하는지 추측 할 필요가 없습니다. –