gpt4 book ai didi

javascript - Javascript 中的内置构造函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:49:57 24 4
gpt4 key购买 nike

当我这样做时:

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"}

为什么?

最佳答案

因为某些内置函数只是定义为以这种方式运行。例如参见 ES5 15.2.1.1 for Object :

15.2.1.1 Object ( [ value ] )

When the Object function is called with no arguments or with one argument value, the following steps are taken:

  1. If value is null, undefined or not supplied, create and return a new Object object exactly as if the standard built-in Object constructor had been called with the same arguments (15.2.2.1).
  2. Return ToObject(value).

他们测试是否使用 new 调用了它们,如果没有,则表现得像使用 new 调用它们一样。

并不是所有的构造函数都是这样工作的。例如,在没有 new 的情况下调用 Date 将返回一个字符串。


你可以自己实现:

function Foo() {
if(!(this instanceof Foo)) {
return new Foo();
}
// do other init stuff
}

Foo()new Foo() 将以相同的方式运行(尽管使用可变参数会变得更加棘手)。

关于javascript - Javascript 中的内置构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9745729/

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