每个脚本的幕后情况如何?假设我将getsize()
很多,代码之间是否有任何区别:
代码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};
}
我认为它们在所有意义上都是等同的,但只是想检查一下。
答案 0 :(得分:2)
在第一个代码示例中,您将返回一个名为Size的命名对象,在第二个代码中,您将返回一个匿名javascript对象。因此,您将丢失Size对象构造函数和原型,从而阻碍您进一步扩展所有类似对象。
答案 1 :(得分:1)
它们(基本上)等同于现在,但只有在Size
原型发生变化之前。如果在将来的任何时候发生变化,您的{width: 0, height: 0}
将会出错,因此最好使用return new Size(0, 0);
唯一真正的区别是Size
对象是与通用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)