170 제공: 함수(obj){
171 nsObj.merge(obj);
172 $c();
173 }
174 };
175 merge(ns, nsDef.getStash());
176 merge(ns, nsObj.getStash());
177개의 콜백(ns);
178 };
179 },
2: 앞서 정의한 네임스페이스인 Namespace.use() => Namespace().use() => Namespace('main').use()의 개체를 사용합니다. 사용을 호출할 때 요구 사항 배열을 초기화합니다.
131 사용: function(syntax ){ / / 네임스페이스 사용
132 this.useList.push(syntax); // 네임스페이스 문자열은 배열 useList에 저장됩니다.
133 var Splitted = Syntax.split(/s /) // 네임스페이스 및 해당 객체는 공백으로 구분됩니다.
134 var fqn = Splitted[0]; // 네임스페이스 가져오기
135 var importName = Splitted[1]; // 네임스페이스의 객체 가져오기
136 _assertValidFQN(fqn);
137 this.requires.push(function($c){ // require 배열에 함수 넣기
138 var context = this;
139 var require = NamespaceObjectFactory.create(fqn); // 지정된 NamespaceObject 개체를 가져옵니다. 이전에 생성된 개체는 캐시에서 직접 가져올 수 있습니다
140 require.call(this,function(state){ // NamespaceObject 개체의 호출 메서드 호출
141 context.loadImport(require ,importName);
143 })
145 반환
3 : 메인의 적용 메소드를 호출합니다. 구체적인 적용방법을 살펴보세요
187 var nsDef = this;
188 createProcedure(nsDef.requires)
189 .next(nsDef.defineCallback)
190 .call(nsDef,function() {
191 콜백( nsDef.getStash() );
192 });
193 }
Proc 객체를 생성하려면 require 배열에서 객체를 꺼내세요. nsDef.defineCallback도 대기열에 추가되고(이 예에서는 정의되지 않음) Proc의 호출 메서드가 호출됩니다. 첫 번째 매개변수는 nsDef이고, 두 번째 매개변수는 콜백 함수입니다.
구체적 사용법:
Namespace를 정의할 때 모든 정의는 정의에 배치되고 익명 함수 형태로 정의됩니다. function (ns) { // 특정 구현 // 외부에 노출되는 객체를 정의합니다. nsName을 사용한 후 외부에서는 ns.nsName.key()를 통해 호출할 수 있습니다. ns.provide({ key : value} );}
namespace.js를 사용하면 모든 정의가 필요할 때만 실행된다는 장점이 있습니다. 즉, 정의가 실제로 사용될 때만 구문 분석됩니다.
ps: 구체적인 내부 통화 관계는 아직 명확하지 않습니다. 나중에 시간이 나면 정리하겠습니다. 이 글은 너무 지저분합니다.