Javascript 在这段代码的幕后发生了什么?

Javascript 在这段代码的幕后发生了什么?,javascript,Javascript,每个脚本的幕后都发生了什么。假设我将是getsize()alot,那么代码之间有什么区别吗: 代码1: function Size (width, height) { this.width = width; this.height = height; } function getSize() { return new Size (0, 0); } 代码2 function getSize () { return {width: 0; height: 0}; }

每个脚本的幕后都发生了什么。假设我将是
getsize()
alot,那么代码之间有什么区别吗:

代码1:

function Size (width, height)
{
    this.width = width;
    this.height = height;
}

function getSize()
{
    return new Size (0, 0);
}
代码2

function getSize ()
{
    return {width: 0; height: 0};
}
我认为它们在所有意义上都是等价的,但只是想检查一下。

它们(本质上)是等价的现在是,但直到
大小
的原型发生变化。如果这在将来的任何时候发生变化,您的
{width:0,height:0}
将不正确,因此最好使用
返回新的大小(0,0)

唯一真正的区别是
大小
对象是与通用JS对象不同的对象的实例:

var a = new Size(0,0);
var b = {width:0, height:0};
alert(a == b) // would be false even if JS didn't always say two objects are different (see comments)

在第一个代码示例中,返回一个名为Size的命名对象,在第二个代码中,返回一个匿名javascript对象。因此,您将丢失Size对象构造函数和原型,从而无法进一步扩展所有类似对象。

第一个返回一个
Size
对象,第二个返回一个“标准”JS对象???问题是什么?
=
注释有点让人困惑,因为“相等”对象在这个意义上永远不相等<代码>{}!=={}