2016-12-28 3 views
0

, 나는 몇 가지를 마이그레이션 문제에 객체 리터럴 경로를 나는 현재 실행 해요자바 스크립트 : 내부 객체 인스턴스로 설정 개체 변수는 내가 더 잘 내 코드를 구성하는 클래스를 만들려고 해요

var MyClass = { 

} 

을 가기로 결정 내 기능의, 이전에 글로벌 범위 변수 채널 예를 들어 개체 인스턴스로 설정했다. 개체를 전역 범위로 이동하지 않고도 클래스 내에서 자바 스크립트에서이 작업을 수행 할 수있는 방법이 있습니까?

var Prime = { 
    Channel: new __Prime__Channel(), 

    //The object in question 
    __Prime__Channel: function() { 
     this.Property = Value; 
    }, 
} 

이것은 당신이 오류없이

var Channel = new __Prime__Channel(); 

function __Prime__Channel() { 
     this.Property = Value; 
} 

을 할 수있는 전역에서 2 호선

에서

정의되지 않은 참조 __Prime__Channel()을 던졌습니다

+1

"여전히이 작업을 수행"- 무엇을 하시겠습니까? – Igor

+0

당신이 무엇을 요구하고 있는지 분명하지 않습니다. 예전 스타일의 작업 코드와 동일한 방식으로 구현하려고하는 * 동일한 기능을 표시 할 수 있습니까? 주의 :'var Prime {'은 유효하지 않은 구문입니다. – trincot

+0

이것을 실행하려는 경우 __Prime__Channel is undefined 클래스 변수를 클래스 함수의 새 인스턴스로 설정하는 방법이 있는지 묻는 메시지가 표시됩니다. – HyperCrusher

답변

0

개체가 클래스가 아닙니다. 올바른 용어를 사용하고 있는지 확인하십시오. 객체 리터럴 it is not possible to do what you want

는 유일한 방법은 어쩌면 객체 리터럴이 잘못된 패턴이 어쨌든, 그러나

var Prime = { 
    __Prime__Channel: function() { 
     this.Property = Value; 
    } 
} 
Prime.Channel = new Prime.__Prime__Channel(); 

입니다. 전역 변수를 피하려면 모듈 패턴과 IIFE를 살펴보십시오.

+0

감사합니다. 내 프로젝트는 javascript 인터프리터가 상당히 out-fo-date로 제한합니다 그리고 나는 제어 할 수 없으므로 객체 리터럴을 "클래스"로 사용하여 붙어있다. 용어로 섞어서 미안하다. – HyperCrusher

+0

Nah, ES1부터 생성자와 프로토 타입으로 "클래스"를 가질 수 있지만 '프라임'은 실제로는 아니다. 'Prime .__ Prime__Channel'은 "클래스"라고 할 수 있습니다. – Bergi