gpt4 book ai didi

javascript - var someObj = {}; 之间的区别和 var someObj = new RealObj

转载 作者:行者123 更新时间:2023-11-30 09:06:09 25 4
gpt4 key购买 nike

所以这更像是一个问题,因为“不知道正确的词,因此我无法用谷歌搜索它”(我认为)。

我一直对 javascript 感到疑惑。可以创建两种“类型”的对象。

一个是:(或通过使用原型(prototype))

function Foo(){
this.bar = function(){};
}

var foo = new Foo();

另一个是:

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

我能想出的唯一区别是前者使用原型(prototype)并且可以从其他对象“扩展”并且还允许多个实例,而后者只能有一个实例并且不能扩展(同理)(如有错误请指正)

但是,在这种情况下,名为 var foo 的变量在两种情况下具有完全相同的属性。

所以对于一个具体的问题:在后一个版本中创建的对象类型的名称是什么(我如何在谷歌上搜索更多信息)以及两种创建对象的方式之间有什么区别?

最佳答案

您描述的差异是正确的。

后者称为对象字面量表示法,如果您只想创建一个对象,则更为简洁。但它们不是两种不同类型的对象。对象字面量符号更像是创建对象的快捷方式(但首选)。

您可能想阅读 MDC - Working with objects .

字面量表示法其实和做的一样:

var foo = new Object();
foo.bar = function() {};

但如前所述,它更加简洁易读。

更新:

也许还有一个值得一提的区别:调用 new Foo() 并不一定意味着您会得到一个“Foo 对象”。构造函数可以返回任何对象。例如。这是有效的:

function Foo() {
return new Bar();
}

var foo = new Foo(); // foo contains a "Bar object"

这对于继承很有用,或者如果你想,例如缓存实例并为传递给函数的相同参数返回相同的实例。

关于javascript - var someObj = {}; 之间的区别和 var someObj = new RealObj,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4829591/

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