이 이중 컨텍스트 스위칭의 경우를 다루는 가장 좋은 방법을 찾고 있습니다. myObject2.someFunc에서javascript에서 이중 컨텍스트 스위칭
function myObject() {
this.data = {};
}
myObject.prototype.each = function(func) {
if (func) {
for (var key in this.data) {
func(key);
}
}
}
function myObject2() {
this.data = {};
}
myObject2.prototype.someFunc = function(o) {
// o = myObject
o.each.call(this, function(key) {
this.data[key] *= o.data[key];
});
}
은 내가 myObject2의 데이터에 액세스 할 수 있도록 환경을 변경하는 호출을 사용합니다. 그러나 이것 때문에 myObject의 각 메소드에서 this는 이제 myObject2를 참조합니다. 호출을 사용하지 않으면 myObject2의 데이터에 액세스 할 수 없습니다.
나는 apply를 사용하여 원래 객체를 인수로 전달한 다음 다시 전달할 것을 생각했지만 myObject.each의 원래 defition을 변경하지 않아도되는 좀 더 우아한 솔루션을 찾고 있습니다.
감사합니다.
이 코드가 실제로 작동하지 않는 이유는 무엇입니까? "each"함수는'func.call (this, key);로 쓰여 져야한다. 그렇지 않으면 "someFunc"의 콜백에서'this'가 작동하지 않을 것이다. – Pointy