gpt4 book ai didi

javascript - Number.somepropertyormethod 和 Number().somepropertyormethod 有什么区别?

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

所以下面的工作:

alert(Number().toString.call(1));

但这不起作用:

alert(Number.toString.call(1));

此外,还有以下工作:

alert(Number.prototype.constructor(1));

但这不起作用:

alert(Number().prototype.constructor(1));

为什么我们在第一个例子中需要跟在 Number 后面的括号,为什么我们必须在第二个例子中省略括号?

最佳答案

Number 是一个构造函数对象。作为函数调用,它允许您创建新的数字实例。 Number() 返回数字 0。 Number 实例具有各种属性和方法,包括 toString()toExponential()(例如)。以下两位语法具有相同的含义:

Number().toString.call(1);
(0).toString.call(1);

Number 对象也有自己的属性。一个特殊的属性是 prototype 属性。这基本上是新数字实例的模板。 Number.prototype 中存在的所有属性也存在于数字实例中。所以我们可以在上面两个的基础上添加第三个相同的代码:

Number.prototype.toString.call(1);

但是,数字实例没有 prototype 属性,因此您无法访问 Number().prototype。另一方面,它们确实有一个 constructor 属性,该属性返回创建它们的对象,即 Number 对象。然后,您可以在此访问 prototype。所以我们的第四段相同的代码:

Number().constructor.prototype.toString.call(1);

希望这已经阐明了 Number 对象和数字实例之间的关系。最后一点,上面所有的代码都与此相同,显然是正确的方法:

(1).toString();

关于javascript - Number.somepropertyormethod 和 Number().somepropertyormethod 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6299806/

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