질문이 있습니다. 우리 모두는 Javascript로 클로저의 힘을 알고 있으며 나는이 힘을 사용하고 싶습니다. "BRB"라는 이름의 객체가 있다고 가정 해 보겠습니다. 내가 원하는 것은 사용자가 메소드 getBrowser()를 처음 호출 할 때마다 브라우저 버전/이름을 찾은 다음 반환하고 getBrowser()가 동일한 값을 반환해야 할 때 static으로 내부에 저장합니다. 값은 이미 정적으로 어딘가에 저장되어 있으므로 계산하지 않아도됩니다. 이것은 여러 가지 방법으로 수행 할 수 있습니다. 객체에 속성을 저장할 수 있습니다. 첫 번째 호출에서는 값을 설정하고 나중에 사용하기 때문에 객체가 생성 될 때 getBrowser 메소드를 직접 실행할 수 있습니다.자바 스크립트의 정적 값 닫기
(function()(
...
))()
그러나 이것은 내가 원하는 것이 아닙니다. 내가 원한 것은 getBrowser() 메소드가 값을 한 번만 계산하고 항상 사용하는 것이다. 객체 내부에 값을 저장하고 싶지 않다. 객체가 생성 될 때 즉시이 메소드를 실행하고 싶지 않다. 오직이 방법 만 사용하도록 허용되어이 모든 방법이이 방법에서 이루어져야합니다. 여기에 예제가 있습니다. "0"이 출력되지만 원하는 것은 각 console.log 요청에 대해 0,1,2,3이 출력된다는 것입니다. 나는 나 자신을 분명히하기를 희망한다. 감사.
(
function(window){
if(window.BRB) return;
var BRB = function(){}
BRB.prototype.getBrowser = function(){
var browser = null;
return function(){
if(browser === null){
browser = 0;
}
return browser++;
}
}
window.BRB = new BRB();
})(window);
console.log(BRB.getBrowser()());
console.log(BRB.getBrowser()());
console.log(BRB.getBrowser()());
console.log(BRB.getBrowser()());
: 그것은 getBrowser 기능 자체에 속성을 작성하여 작동? – bfavaretto