0

다음 코드 예제는 동일합니까?다른 JS 네임 스페이스 선언

버전 1 :

var myNamespace = {}; 
myNamespace.say = function() {...} 

버전 2 (JS-바이올린 : https://jsfiddle.net/542wbkat/) :

var myNamespace = new function() { 
    this.say = function() {...}; 
} 

버전 3 :

var myNamespace = { 
    "say": function() {...} 
} 
나는 순수 자바 배경에서 오는

이 나는 다소 혼란 스럽다. 코드를 테스트 해 보았는데 모두 정상적으로 작동하지만 JS가 내부적으로 버전을 다르게 처리하는지 궁금합니다. 이 게시물을 쓰기 전에 모질라 데브 네트워크 https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects에서 문서를 읽었지만 여전히 내 머리를 감쌀 수는 없습니다.

추가 질문 : 'myNamespace'네임 스페이스에서 만든 함수를 (클래스의 인스턴스로) 인스턴스화 할 수 있습니까? 또는 나는 이것을 얻고있다

건배!

+0

그런데 지금은 예전의 코드를 정리하고 난 3 개 가지 버전이 사용 된 파일과 내가 청소하고 프로그램을 발견 성공적으로 조용히 실행 중이었습니다. 심지어 직접 스크립트를 테스트했습니다. – FabianTe

+0

나는 작동하는 버전 2를위한 바이올린을 만들었습니다 : https://jsfiddle.net/542wbkat/ – FabianTe

+0

기능들과 함께'new'를 사용하지 마십시오 .... –

답변

0

모든 방법은 차이가없는 객체

입니다

console.log(typeof myNamespace);  
// object 
+0

그리고 하나의 선언처럼 함수를 정적으로 만들거나 인스턴스화 할 수있는 것과 같은 java-equivalent 차이점이 없습니까? – FabianTe