在Javascript中使用空函数

dus*_*awn 5 javascript namespaces

我想了解第三方的Javascript代码.但我无法弄清楚以下编码风格的用途.

 function A(){
    }
A.Prop = '23';
A.generate = function(n){
   // do something
}
Run Code Online (Sandbox Code Playgroud)

然后它只是用作:

A.generate(name);
Run Code Online (Sandbox Code Playgroud)

有人可以解释这段代码在做什么.我理解一些OO Javascript,但我想知道这是否是任何其他形式的扩展具有新属性的对象.虽然我没有看到任何"新"关键字被使用,但创建一个对象.

有任何想法吗 ?

谢谢,

Tra*_*ebb 7

他们正在创建命名空间.有很多方法可以做到这一点,而且所有方法都或多或少相同:

A = {
    Prop : '23',
    generate : function (n) {
        // do something
    }
};
Run Code Online (Sandbox Code Playgroud)

或者,等效地:

A = { };
A.Prop = '23';
A.generate = function (n) {
    // do something
};
Run Code Online (Sandbox Code Playgroud)

另外,如果你喜欢冗长:

A = new Object();
A.Prop = '23';
A.generate = function (n) {
    // do something
};
Run Code Online (Sandbox Code Playgroud)

function 通常用于表示"类"而不是"命名空间",如下所示:

A = (function () {
    var propValue = '23';    // class local variable
    return {
        "Prop" : propValue,
        "generate" : function (n) {
            // do something
        }
    };
})();
// then I can use A in the same way as before:
A.generate(name);
Run Code Online (Sandbox Code Playgroud)