내 네임 스페이스는 즉시 호출 된 함수 식 (IIFE)을 사용하여 작성됩니다.IIFE (JavaScript 네임 스페이스 확장)
(function ($, MyObjectName, undefined) {
"use strict";
MyObjectName.publicFunction = function() {
privateFunction();
};
var privateFunction = function() {
document.write('hello');
};
}(jQuery, window.MyObjectName = window.MyObjectName || {}));
//이
MyObjectName.publicFunction();
지금 내가 다른 공개적으로 액세스 객체이 네임 스페이스를 확장하려는 공용 메서드를 호출 내 기본 구조는 같다. 여기에서 현재의 네임 스페이스 내에서 다른 IIFE를 실행하고 있습니다. 아래를 참조하십시오.
(function ($, MyObjectName, undefined) {
"use strict";
var ExtendedObject = (function ($, ExtendedObject, undefined) {
"use strict";
ExtendedObject.publicFunction = function() {
privateFunction();
};
var privateFunction = function() {
document.write('<br>hello again');
};
}(jQuery, window.MyObjectName.ExtendedObject = window.MyObjectName.ExtendedObject || {}));
}(jQuery, window.MyObjectName = window.MyObjectName || {}));
//는 확장 네임 스페이스
MyObjectName.ExtendedObject.publicFunction();
이 일의 '올바른'방법인가에서 공용 메서드를 호출? 그렇지 않다면 어떻게해야합니까?
만약 OP가 vanilla JS의 대중적인 가시성에 대해 걱정한다면, 코드의 작성은 좋은 해결책이 될 수 있습니다. https://github.com/mishoo/UglifyJS2 –
@TylerDurden 클로저 기반 개인 정보 보호보다 uglification이 더 바람직하다는 데 동의합니다. 대부분의 환경은 디버거에 클로저를 노출하지만 일부 확실한 난독 화는 사람들을 막을 수 있습니다. Javascript가 그 것이다. 돼지 위에 립스틱을 씌우는 데는 아무런 문제가 없습니다. 대신 sh * t로 덮으십시오! :) – Raith