当我这样做的时候:
var person = new Object();
person.name = "alex";
console.log(person)
输出为:
Object { name="alex"}
但是,假设我去掉了"new“这个词,并这样做:
var person = Object();
person.name = "alex";
console.log(person)
输出也是:
Object { name="alex"}
为什么?
发布于 2019-05-16 19:03:44
由于您的示例是一个内置函数的对象类型,正如上面所回答的,对于这种类型是相同的,所以对于大多数其他内置函数,比如Number(),它的工作方式是不同的。在使用'new‘关键字调用它们时,您应该非常小心。因为在默认情况下,带有函数构造函数的'new‘关键字返回一个对象,而不是直接返回一个基元类型。因此,例如,如果两个变量中的一个是使用new Number()
声明和赋值的,而另一个是使用Number()
声明和赋值的,则不能对这两个变量进行严格相等检查
下面是一个例子:
var num1 = Number(26);
var num2 = new Number(26);
num1 == num2; // returns true
num1 === num2; // returns false
您可以在控制台日志中查看差异:
console.log(num1);
> 26
console.log(num2);
> Number {26}
> __proto__: Number
> [[PrimitiveValue]]: 26
https://stackoverflow.com/questions/9745729
复制相似问题