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