2015-01-13 2 views
0

a.jsJS 파일에 네임 스페이스 변수에 액세스 할 수 없음 수

App.constant.CONST1를 사용 b.js 말에 액세스 할 수
// @global-constants 
var App = { 

    constant: function() { 
    constant.prototype.CONST1 = 'abc'; 
    } 

}; 

module.exports = App; 

하지, 그것은 왜 정의되지 않은 말한다? ,

1) App.constant 클래스 (기술적으로 함수를) 반환,하지만 당신이 원하는 것은 그것이가되도록,하는 new 키워드를 사용하여 만들 수있는 객체의 수 있습니다 :

+1

'App.constant'는 함수이며 함수에는'CONST1' 속성이 없기 때문에? 가장 간단한 예제 :'function foo() {foo.prototype.CONST1 = 42;}; console.log (foo.CONST1);'''undefined'를 로깅합니다. –

+0

어떻게 작동하도록 변경합니까? – ksbg

답변

0

이 당신의 코드에 두 가지 문제있다 (new App.constant).CONST1. constant는 익명 함수의 이름이 아니기 때문에

2) constant.prototype.CONST1은 작동하지 않을 것입니다, 그래서 나는 그것에게 이름 foo을주고 그것은 foo.prototype.CONST1된다.

수정 된 코드 :

var App = { 
    constant: function foo() { 
    foo.prototype.CONST1 = 'abc'; 
    } 

}; 

console.log((new App.constant).CONST1); 

바이올린 demo. 당신이 그들을 사용하지 않을 때는시기를 알 수 있도록

// @global-constants 
var App = { 

    constant: { 
     CONST1: 'abc'; 
    } 

}; 

이 (일을 프로토 타입 방법에 대한 자세한 내용은 :

0

그냥 "상수"세트를 만들려면, 당신이 필요로하는 모든 객체이다), 나는 this article on MDN을 읽을 것을 권장합니다.

관련 문제