2013-02-23 5 views
0

JSON에서 생성자의 이름을 요청하고 javascript에서 실행하게하고 싶습니다.JSON에서 생성자 만들기

json.js

{ 
    objArray = [ 
     { 
      "funcName":"executeMe" 
     } 
    ] 
} 

page.js

var newInstance = createInstanceByName(objArray[0].funcName); //"executeMe" 
//Functions like: var newInstance = new lib.executeMe(); 

lib.js은 (I 제어 할 수없는) 다음과 같습니다

(lib.executeMe = function() { 
    this.initialize(img.executeMe); 
}).prototype = new cjs.Bitmap(); 
p.nominalBounds = new cjs.Rectangle(0,0,200,200); 

this thread에서 솔루션을 재사용 할 수 있었으면 좋겠지 만 newInstance 변수를 page.js에서 사용할 수 있어야합니다. 컨텍스트를 전달하는 것으로 충분하지 않습니다. 여기에 일이 필요해.

어떻게 createInstanceByName()이 작동합니까?

답변

2
function createInstanceByName(funcName) { 
    return new lib[funcName]; 
} 

당신은 다음 인수를 전달 배열에 넣어, 대신이 작업을 수행해야하는 경우 :

function createInstanceByName(funcName, args) { 
    var inst = Object.create(lib[funcName].prototype) 
    lib[funcName].apply(inst, args); 
    return inst; 
} 

당신은 또한 슬라이스 대신의를 사용하여 arguments 개체를 사용할 수 있습니다 정렬.

이전 브라우저에서는 Object.create 메서드를 사용할 수 없지만이 메서드는 충분히 심플하게 사용할 수 있습니다.

+0

네. 기본적으로'return new (expression.that.returns.constructor)' –

+0

완벽하게 작동합니다! 너무 단순했습니다 ... ^^ ;;; 고맙습니다. –

+1

@ 베노노스 케 : 천만에. –