2012-08-30 8 views
0

이 JavaScript 예제의 문제점과 가능한 경우 해결 방법을 설명 할 수 있습니까?JavaScript에서 사용자 정의 객체 및 함수 정의

// I can define objects/functions like this. 
    window['Custom'] = function() { }; 
    //Works...I now have a 'Custom' function in scope... I can now do this... 

    var c = new Custom(); // WORKS!! 

    //This does not seem to work! 
    window['Custom.prototype.msg'] = function(msg) { 
     alert(msg); 
    }; 

    // I DO NOT WANT TO DO THIS! 
    Custom.prototype.msg = function(msg) { alert(msg); }; 


    x.msg("Hello"); 
    //FireFox Error: TypeError: x.msg is not a function... 
    // HOW DO I FIX THIS!? 

답변

1

당신이 원하는 :

window.Custom.prototype.msg = function(msg) { ... } 

브래킷 표기법이 문자열이 필요하지만 문자열 객체 그래프의 표현으로 해석되지 않습니다; 그것은 단지 문자열입니다. 따라서 window["Custom.prototype.msg"]은 "Custom.prototype.msg"라는 전역 함수를 만듭니다.

편집 —이 또한 작동합니다 : 그래서

window["Custom"]["prototype"]["msg"] = function(msg) { ... } 

당신이 어떤 이유로 그 점 목록 식으로 작업하는 경우, 당신은 그들이 당신을 파괴 할 것 같은 해석하려는 경우 그들 자신.

+0

정확히 내가 원하지 않는 것입니다. 죄송합니다. 제 수정 된 예를 봅니다. – series0ne

+0

@activwerx 무엇이든지 원하거나 원하지 않는다면 코드가 단순히 자바 스크립트가 아닌 코드로 작동하지 않을 것입니다. 나는 대답에 또 다른 제안을 추가 할 것이다. – Pointy

+0

감사합니다. 혼란스러워서 죄송합니다. – series0ne

관련 문제