Number。[property]是对象或构造函数的属性?

时间:2016-04-18 18:50:39

标签: 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 是构造函数数字的属性?我正在学习对象,我认为属性和方法是由构造函数添加到对象中的。

感谢任何解释!

1 个答案:

答案 0 :(得分:1)

请注意,即使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是静态属性。构造函数的静态属性属于构造函数,而不是通过原型继承属于实例。

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