【问题标题】:The difference between Number as an object and Number as a constructorNumber 作为对象和 Number 作为构造函数的区别
【发布时间】:2017-10-17 13:30:44
【问题描述】:

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

【问题讨论】:

  • 它们是一样的。它是一个构造函数,并且具有原型上没有的静态属性。函数也是对象。
  • 你能举一个代码的例子吗..,谢谢。
  • "所以这是构造函数方法的定义。" - 你如何从字符串表示中判断?我看到的只是function,而不是构造函数或方法。
  • ^^!有一个命名构造函数的约定..,第一个字母是大写的。

标签: javascript constructor wrapper theory


【解决方案1】:

只有一个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());

【讨论】:

  • ^^ 绝对......,我实际上正在审查这个主题。你刷新了我的记忆..,再次感谢。
  • 酷!用 JavaScript 玩得很开心... ;)
【解决方案2】:

首先您必须了解如何在 javascript 中使用类和对象。

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

您可以模拟如下类:

//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;
}

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

这个

在构造函数上。

所以,为了给你一个更具体的回应,原生 Number 就像一个具有一些静态属性的类。

【讨论】:

  • 谢谢。我来自 Java 编程背景。不过,这很有帮助。我猜你忘了把 () 放在 >> function MyCustomType() {}
  • @ProfessPhysics 已更正!
猜你喜欢
  • 2022-06-14
  • 2010-09-27
  • 1970-01-01
  • 2017-04-21
  • 2013-05-05
  • 2011-02-15
  • 2011-06-01
  • 2016-03-23
  • 2011-01-23
相关资源
最近更新 更多