먼저 네임 스페이스를 정의하는 최상위 네임 스페이스에 정의 모듈 메서드를 추가하려고합니다. 예 :Javascript Define Module 메서드 할당
그러나 내 구현에는 할당 문제가있는 것으로 보입니다. 다음은 구현의 간략한 예입니다.
var APP = APP || {};
APP.namespace = function(nsString) {
var parts = nsString.split('.'),
parent = this,
i;
if (parts[0] === 'APP') {
parts = parts.slice(1);
}
for (i = 0; i < parts.length; i++) {
if (typeof parent[parts[i]] === 'undefined') {
parent[parts[i]] = {};
}
parent = parent[parts[i]];
}
return parent;
};
// Simplified example of my define function
APP.define = function(name, definition) {
var namespace = APP.namespace(name);
namespace = definition();
return namespace;
};
// Example Module
APP.define('modules.example', function() {
return {
name : 'Application',
module : 'APP.module'
};
});
그러나 이름 공간이 definition()
에 할당 된 후 APP 네임 스페이스에 할당되지 않은 것처럼 보입니다. 그러나 var module = APP.define('module.example', function() { /*...*/ })
가 작동합니다. 이것은 또한 작동합니다 :
개체 참조 또는 콜백 범위에 대해 뭔가가 있어야합니다. 누락되었습니다.
아마 '필요 (parts.length === 0) return;'if (parts [0] === 'APP') ..'코드의 일부분이지만 그 것이 세부 사항이다. – artygus