고유 범위가있는 prototype
함수를 만들고 싶습니다. 이를 위해 익명의 함수를 사용하지만 객체의 멤버에 액세스하는 방법을 찾을 수 없습니다.익명 함수로 액세스하기
function F() {
this.counter = 0;
}
F.prototype.increment = (function() {
var lastIncrementTime = -1;
var caller = this; // <--- it fails here because this is the Window object
return function(time) {
if (time > lastIncrementTime) {
caller.counter++;
lastIncrementTime = time;
return caller.counter;
}
return caller.counter;
}
})();
f = new F();
f.increment();
나는이 F
를 참조하거나 f
객체하지 않기 때문에 실패 알고 여기
액세스 할 수있는 방법이 있습니까?
인스턴스에 특정 카운터를 갖고 싶습니다. Kolink의 버전이 정상적으로 작동하는 것 같습니다. 귀하의 경우'this'가 인스턴스 특정 카운터에서 작동하지 않는 프로토 타입 객체를 참조합니다. –
@MadEchet 특정 인스턴스가 필요하다면 _prostotype_이 아닌 _constructor_에 해당 인스턴스를 원할 수 있습니다. Kolink의 솔루션은 정상적으로'this'를 사용할 수있는 곳에'호출자 (caller) '를 사용하기 때문에 "작동"합니다. 그러나 그 솔루션은 여전히 모든 인스턴스에서 공유되는'lastIncrementTime'을 가지고 있습니다. –
사실, lastIncrementTime이 공유되었다는 것을 몰랐습니다. 감사! –