Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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 对象文字与函数_Javascript_Module_Notation - Fatal编程技术网

Javascript 对象文字与函数

Javascript 对象文字与函数,javascript,module,notation,Javascript,Module,Notation,我无法找到以下问题的答案 我最担心的是启动一个大多数环境(主要是浏览器)都不支持的项目。我发现您可以用两种不同的方式编写模块:函数或对象文本 对象文字 函数表达式 第二个选项可以创建私有成员,而我发现第一个选项没有。我发现的信息还声称第一个选项是对象,而第二个是函数表达式 对JS来说是半新的,所以我可能会遇到一些问题。除了使内部成员私有化的能力外,符号中还有其他区别吗?从我所读到的,两者都能够遵循模块、观察者和单例模式。我发现的唯一区别是原型设计模式。有几个术语需要了解。首先,因为它与功能有关:

我无法找到以下问题的答案

我最担心的是启动一个大多数环境(主要是浏览器)都不支持的项目。我发现您可以用两种不同的方式编写模块:函数或对象文本

对象文字

函数表达式

第二个选项可以创建私有成员,而我发现第一个选项没有。我发现的信息还声称第一个选项是对象,而第二个是函数表达式


对JS来说是半新的,所以我可能会遇到一些问题。除了使内部成员私有化的能力外,符号中还有其他区别吗?从我所读到的,两者都能够遵循模块、观察者和单例模式。我发现的唯一区别是原型设计模式。

有几个术语需要了解。首先,因为它与功能有关:

:

匿名函数声明:

function foo(){
    var bar = function (){};
    return{
        method: bar
    }
}
将函数指定给变量时:

第一组括号将匿名函数声明转换为表达式:

var foo = function(){
    var bar = function (){};
    return{
        method: bar
    }
}
现在,除了函数之外,您还询问了一个:

与函数表达式相比:

var foo = function(){
    var bar = function (){};
    return{
        method: bar
    }
}
甚至是函数声明:

function foo(){
    var bar = function (){};
    return{
        method: bar
    }
}

对于能够创建私有成员的函数语法,您是正确的,而对象文字不具备这种能力,它只是对键/值进行分组的一种方式。但是,另一个重要的区别是函数可以用作构造函数var f=new foo,并且可以具有,而对象文本不能。因此,在设置继承模式时,函数通常更通用。

您使用了错误的术语。您的问题中没有任何内容与JSON相关。您已经回答了您的问题。对于快速响应,“对象文字”实际上是我理解这个概念的最大障碍。
var foo = function(){

}
(function(){

})();
var foo = {
    bar: function(){}
}
var foo = function(){
    var bar = function (){};
    return{
        method: bar
    }
}
function foo(){
    var bar = function (){};
    return{
        method: bar
    }
}