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。
当我们尝试在屏幕上打印 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。