javascript - Number.[property] 是对象还是构造函数的属性?

标签 javascript object constructor numbers

console.log(Number) //returns constructor function Number(), not an Object
console.log(Number.NaN) //returns the value of property NaN

这是否意味着,在 Number.NaN 中,属性 NaN 是构造函数 Number 的属性?我正在学习对象,我认为属性和方法是通过构造函数添加到对象中的。

感谢您的解释!

最佳答案

请注意,即使 typeof 表示某物是函数而不是对象,函数仍然是对象。因此您可以向其添加属性:

function f(){}
Object(f) === f; // true - belongs to Object type
f.prop = 'val';
f.prop; // 'val'

在这种情况下,Number 可以用作函数或构造函数:

Number("123"); // 123 - used as a function, returns a primitive
new Number("123"); // Number {123} - used as a constructor, returns an object

如果你把它看作一个函数,NaN 只是一个普通的属性。

如果将其视为构造函数,则可以说 NaN 是静态属性。构造函数的静态属性是属于构造函数的属性,而不是通过原型(prototype)继承属于实例的属性。

class Foo {
  static func1() { return 1;}
  func2() { return 2; }
}
Foo.func1(); // 1 - static method
new Foo().func2(); // 2 - prototypical method

关于javascript - Number.[property] 是对象还是构造函数的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36702046/

相关文章:

javascript - .clone 无法正常工作,也没有返回名称数组

C# 对象失去它的引用并变为空

c++ - 构造函数排序(全局范围)问题

java - 使用两个不同的构造函数创建单个对象

JavaScript:使用不带运算符的构造函数 'new'

javascript - 如何从雷达图中的鼠标悬停结果中删除数据值?

javascript - 隐藏第一个子级中的上一个按钮

javascript - 使用 Javascript 计算模式

C++ 理解类和构造函数

php - WooCommerce 3.0 结账期间出现 "properties should not be accessed directly"问题