在JavaScript中定义自定义对象和函数

时间:2012-08-30 13:36:12

标签: javascript ecmascript-5 jscript

有人可以解释这个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 个答案:

答案 0 :(得分:1)

你想:

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

括号表示法采用字符串,但字符串不会被解释为对象图表达式;它只是一个字符串。因此,window["Custom.prototype.msg"]创建一个名为“Custom.prototype.msg”的全局函数。

编辑 - 这也可以:

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

因此,如果您因某些原因使用这些虚线列表表达式,如果您希望将它们解释为这样,则必须自行解析它们。