gpt4 book ai didi

javascript - 对象文字与函数

转载 作者:行者123 更新时间:2023-12-03 00:39:50 27 4
gpt4 key购买 nike

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

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

对象文字

var foo = {
bar: function(){}
}

函数表达式

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

第二个选项具有创建私有(private)成员的能力,而据我所知,第一个选项没有。我找到的信息还声称第一个选项是一个对象,而第二个选项是一个函数表达式。

对 JS 半陌生,所以我可能会遇到一些问题。除了能够将内部成员设为私有(private)之外,在表示法上还有其他区别吗?根据我的阅读,两者都能够遵循模块、观察者、单例模式。我发现的唯一区别是原型(prototype)设计模式。

最佳答案

有几个术语需要了解。首先是与功能相关的:

<强> Function Declaration :

function foo(){

}

匿名函数声明:

function(){

}

<强> Function Expression (其中函数被分配给变量):

var foo = function(){

}

<强> Immediately Invoked Function Expression (第一组括号将匿名函数声明转换为表达式):

(function(){

})();
<小时/>

现在,除了函数之外,您还询问 Object Literal :

var foo = {
bar: function(){}
}

对比函数表达式:

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

甚至是函数声明:

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

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

关于javascript - 对象文字与函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53509232/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com