Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中声明命名空间时是否应该使用prototype_Javascript_Namespaces - Fatal编程技术网

在javascript中声明命名空间时是否应该使用prototype

在javascript中声明命名空间时是否应该使用prototype,javascript,namespaces,Javascript,Namespaces,我只是想知道在javascript中使用名称空间的“最佳”方式是什么。我知道这已经被问过无数次了,但我见过很多方法,包括简单地将一个对象声明为包含相关变量和方法的名称空间。这是首选方法还是最好使用protype构造,如中所示: function Namespace() { } Namespace.prototype.newMethod = function() { }; //... // now to use this: var namespace = new Namespace();

我只是想知道在javascript中使用名称空间的“最佳”方式是什么。我知道这已经被问过无数次了,但我见过很多方法,包括简单地将一个对象声明为包含相关变量和方法的名称空间。这是首选方法还是最好使用protype构造,如中所示:

function Namespace() {

}

Namespace.prototype.newMethod = function() {

};

//...

// now to use this:
var namespace = new Namespace();
namespace.newMethod();

我还想知道为什么一种方法优于另一种方法。

在创建
名称空间的实例时,通常只使用原型方法。如果这些方法是静态的(如其他OO语言所定义的),那么简单地创建一个对象并在其上粘贴函数就是最好的选择


换句话说,使用代码,您将无法调用
Namespace.newMethod()
。但是您可以执行
(newnamespace()).newMethod()
。每种方法都用于解决不同的问题。

之后,您建议如何访问名称空间的成员?创建名称空间的实例?通过
名称空间.prototype
访问?是的,创建对象的实例是否确实希望用户创建整个名称空间的实例?名称空间通常是global/singleton.strager-我不确定..这是我困惑的核心。例如,何时使用名称空间(在静态意义上)与何时创建对象(通过原型链接)。这就是我的意思。你介意详细说明哪一种对什么类型的问题有好处吗?谢谢,我很难在Java这样典型的静态类型OO语言之外思考问题。我需要具有传统类功能的“名称空间”(所以我想原型链接在这里是最好的);但我偶尔也会需要静态方法(就像在Java中一样)。如果您有一个用作类的函数,请使用.prototype.methodName来声明实例方法,使用.methodName来声明静态方法。