2016-06-06 7 views
0

휠 탐색 모델에 기반한 그래픽 메뉴 시스템이 있습니다. 각 '레이어'메뉴는 색상 및 메뉴를 정의하는 속성이있는 새로운 Wheel 객체로 구성됩니다 선택 등등.Javascript에서 수많은 팩토리 객체를 효율적으로 생성하는 방법

나는 funfunfunctions에서 마티아스 페터 요한슨에서 개 공장에 가깝다 뭔가를 모든 레이어를 구축하기위한 하나의 일반 객체 작성자를 구축하는 팩토리 메소드를 사용하고 싶습니다 : 비디오 : https://www.youtube.com/watch?v=ImwrezYhw4w 성적 : https://medium.com/humans-create-software/factory-functions-in-javascript-video-d38e49802555#.mrrvx4a37

개 공장 방식으로 개체 :

const dog =() => { 
    const sound = 'woof' 
    return { 
    talk:() => console.log(sound) 
    } 
} 

// create a single new dog 
const sniffles = dog() 
sniffles.talk() // Outputs: "woof" 

이 방법은 잘 작동하며 작동 원리는 알 수 있습니다. 나에게 조금 더 긴장하는 것은 말하자면 약 30 마리의 개를 '대량 생성'하는 방법입니다 ... 가변적 인 속성 (다른 색, 크기 등)을 가진 개 이름 배열을 반복합니다.

보이는 모든 팁이나 예 또는 방향을 알려주세요.

답변

2

여기 매우 빠른 반 작성 예제, 나는 독자에게 연습으로 나머지를 채우고 떠날 것이다 :

const dogProps = [{color: "brown"}, {color: "black"}]; 
const dog = ({color}) => { 
    // construct with color 
}; 

const dogs = dogProps.map(dog); 
+0

감사합니다, MADARA을 빠른 응답! 하지만 코드를 얻으면 개 [1] .color, 개 [2] .color 등을 통해 각 개 색상에 액세스합니다. 더 개인 이름을 통해 액세스하고 싶다면 ... sniffles.color, scruffy.color 등등 ... 배열을 사용하여 객체의 이름도 생성합니다. ? –

+1

@JimmPratt JS에는 변수가 없습니다. 'const [sniffles, scruffy] = dogProps.map (dog)'와 같은 구조 해제 할당을 사용할 수 있습니다. 그러나 동적 이름을 사용하여 내부 범위에 새 변수를 정의 할 수는 없습니다. –

+0

Meh, 많이 생각하고 ... eval()을 사용하는 것은 악으로 간주됩니다 ... dogNames = [ "sniffles", "scruffy"를 사용하여); 창 [ 'varname'] 메서드를 사용하면 메서드와 변수를 추가하는 데 지저분한 느낌이 듭니다. (http://www.hiteshagrawal.com/javascript/dynamic-variables-in-javascript/) .. 그래서 ... 개들과. 뭐든간에. 시간 내 줘서 고마워! –