0

この 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!?
4

1 に答える 1

1

あなたがしたい:

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

ブラケット表記は文字列を取りますが、文字列はオブジェクト グラフ式として解釈されません。それは単なる文字列です。したがって、window["Custom.prototype.msg"]「Custom.prototype.msg」というグローバル関数を作成します。

編集— これも機能します。

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

したがって、何らかの理由でこれらのドット リスト式を使用している場合、それらをそのように解釈したい場合は、自分で分割する必要があります。

于 2012-08-30T13:37:26.560 に答える