【发布时间】:2013-07-06 12:18:51
【问题描述】:
我想将 obj 构造函数保留在某个命名空间中,并且在调试时没有问题。
现在我有这样的代码:
var namespace = {};
namespace.myConstructor = function(){};
// ----------- debug in console
(new namespace.myConstructor()); // -> namespace.myConstructor {}
(new namespace.myConstructor()).constructor; // -> function (){}
我不喜欢构造函数是匿名的。 所以我可以通过其他方式做到这一点:
(更好,但丑陋)
var namespace = {};
namespace.myConstructor = (function(){
function myConstructor(){};
return myConstructor;
})();
// ----------- debug in console
(new namespace.myConstructor()); // -> myConstructor {}
(new namespace.myConstructor()).constructor; // -> function myConstructor(){}
或者(最漂亮最短的方式)
namespace.myConstructor = function myConstructor(){};
// ----------- debug in console
(new namespace.myConstructor()); // -> myConstructor {}
(new namespace.myConstructor()).constructor; // -> function myConstructor(){}
但我读到here,说 NFE(命名函数表达式)存在一些问题。
哪种方式更好?哪种方式是好的做法?
【问题讨论】:
-
@Yve 我删除了额外的问题。现在好了吗?
标签: javascript namespaces