제 동료는 소문자 "f"와 함께 "new function ()"을 사용하여 JavaScript에서 새 개체를 정의했습니다. 모든 주요 브라우저에서 잘 작동하는 것처럼 보이며 개인 변수를 숨기는데도 상당히 효과적입니다. 예를 들면 다음과 같습니다.
var someObj = new function () {
var inner = 'some value';
this.foo = 'blah';
this.get_inner = function () {
return inner;
};
this.set_inner = function (s) {
inner = s;
};
};
"this"가 사용되는 즉시 someObj의 공용 자산이됩니다. 따라서 someObj.foo, someObj.get_inner () 및 someObj.set_inner ()는 모두 공개적으로 사용할 수 있습니다. 또한 set_inner () 및 get_inner ()는 권한이있는 메소드이므로 클로저를 통해 "내부"에 액세스 할 수 있습니다.
그러나 나는이 기술에 대한 언급을 어디서도 보지 못했습니다. Douglas Crockford의 JSLint조차도 이에 대해 불평합니다.
- 이상한 건설. '신규'삭제
우리는이 기술을 프로덕션에 사용하고 있고 잘 작동하는 것 같지만 어디에도 문서화되어 있지 않기 때문에 약간 불안합니다. 이것이 유효한 기술인지 아는 사람이 있습니까?
this
개체가 아닌 이벤트를 발생시킨 요소를 참조하지만var instance = this
대신 사용할 수 있습니다 .