Number作为对象和Number作为构造函数的区别

The difference between Number as an object and Number as a constructor

当我们尝试在屏幕上打印 Number 时,例如:document.querySelector('#test').textContent = Number,我们得到的结果是:function Number() { [native code] }。所以这是构造函数方法的定义。但是为什么相同的名称用于对象编号包装器 Number,它有几个方法和字段(属性),例如 Number.MAX_VALUE? ..,即两者之间有什么区别?

只有一个 Number 对象。要理解原因,您必须记住 JavaScript 是如何工作的...看看这个基本示例:

function Test(foo, bar) {
  this.foo = foo;
  this.bar = bar;
  
  return "Hello!";
}

Test.bye = function () {
  return "Bye!";
};

console.log(new Test('Foo', 'Bar'));
console.log(Test('Foo', 'Bar'));
console.log(Test.bye());

首先,您必须了解如何使用 class 和 javascript 中的对象。

虽然javascript不是面向对象的,但是模拟了一些OOP的原理。

您可以像下面这样模拟 class:

//class/constructor definition
function MyCustomType() {}

//static property
MyCustomType.SOME_CONSTANT_VALUE = "Hello, ";

//property of class
MyCustomType.prototype.Name = "World";

//methods
MyCustomType.prototype.getName = function () {
    return MyCustomType.SOME_CONSTANT_VALUE + this.Name;
}

重要的是了解原型等元素以及为什么您的使用比使用更好

this

在构造函数上。

因此,为了给您更具体的响应,本机 Number 就像一个具有一些静态属性的 class。