javascript组织
我是在javascript代码组织方面遇到的javascript组织,javascript,code-organization,Javascript,Code Organization,我是在javascript代码组织方面遇到的 var DED = (function() { var private_var; function private_method() { // do stuff here } return { method_1 : function() { // do stuff here }, method_2 : function() {
var DED = (function() {
var private_var;
function private_method()
{
// do stuff here
}
return {
method_1 : function()
{
// do stuff here
},
method_2 : function()
{
// do stuff here
}
};
})();
现在我做这个,
var DED = new Object;
DED = {
sidebar : {
method_1 : function (data){
//some stuff
},
method_2 : function(data){
//do more
}
},
main : {
//.......
},
globalVariables : {
//...
}
}
一个比另一个有什么优势?警告:这里是新手。如前所述,该方法使用闭包实现私有函数和数据。它是构造函数方法(如下)的替代方法。例如
对于问题中显示的DED方法,没有构造函数。相反,该函数返回从对象文本创建的对象。该对象中的函数具有封闭的私有变量和方法。如图所示,该方法使用封闭来实现私有函数和数据。它是构造函数方法(如下)的替代方法。例如
对于问题中显示的DED方法,没有构造函数。相反,该函数返回从对象文本创建的对象。该对象中的函数具有封闭的私有变量和方法。从匿名自调用函数(function(){})()返回的是为“模块”(DED)发布的接口 DED.method_1()是公共的。private_method/private_var无法从外部访问,但自调用函数内部的所有内容都可以访问它们 如果您喜欢这种访问控制,那么这是防止其他开发人员意外干扰模块内部的好方法。在很多情况下,我会选择一个命名约定,比如一个前导下划线来表示内部
Javascript是非常动态的,如果有人真的想弄乱代码,他们没有写权限,他们将能够这样做编辑:这证明是一种错误的关联,而不是构造函数或闭包中的私有数据。请参阅:从匿名自调用函数(function(){}())返回的是为“模块”(DED)发布的接口 DED.method_1()是公共的。private_method/private_var无法从外部访问,但自调用函数内部的所有内容都可以访问它们 如果您喜欢这种访问控制,那么这是防止其他开发人员意外干扰模块内部的好方法。在很多情况下,我会选择一个命名约定,比如一个前导下划线来表示内部
Javascript是非常动态的,如果有人真的想弄乱代码,他们没有写权限,他们将能够这样做编辑:这证明是一种错误的关联,而不是构造函数或闭包中的私有数据。请参阅:如果第一个示例和第二个示例使用相同的名称,则回答此问题会容易得多。次要说明:您不需要将DED初始化为新对象。下一行中的对象文字符号也会做同样的事情。如果您想要本地作用域,请不要忘记“var”。@kioopi如果您忘记了“var”,这是否意味着它会将DED绑定到window.DED属性(假设它在浏览器中运行)?@jamiebarrow是的,没错。默认为全局范围是javascript的一个非常糟糕的部分。如果第一个示例和第二个示例使用相同的名称,那么回答这个问题就会容易得多。次要说明:您不需要将DED初始化为新对象。下一行中的对象文字符号也会做同样的事情。如果您想要本地作用域,请不要忘记“var”。@kioopi如果您忘记了“var”,这是否意味着它会将DED绑定到window.DED属性(假设它在浏览器中运行)?@jamiebarrow是的,没错。默认为全局作用域是javascript非常糟糕的一部分。嗯,“访问控制”很有意义。我现在正在学习,所以从来没有想过“其他开发人员”会制造问题。确切地说,你认为其他代码可以访问私有变量吗?有趣的是,我偶然发现了一个可以访问封闭私有成员的边缘案例:它使用参数的非标准属性“调用者”。嗯,“访问控制”很有意义。我现在正在学习,所以从来没有想过“其他开发人员”会制造问题。确切地说,你认为其他代码可以访问私有变量吗?有趣的是,我偶然发现了一个可以访问封闭私有成员的边缘案例:它使用参数的非标准属性“调用者”。使用它们之后,意识到构造器是令人敬畏的在使用它们之后,意识到构造器是令人敬畏的
var DED = new (function()
{
var private_var;
function private_method()
{
// do stuff here
}
this.method_1 = function()
{
// do stuff here
};
this.method_2 = function()
{
// do stuff here
};
})();