【问题标题】:Number.[property] is a property of object or constructor?Number.[property] 是对象还是构造函数的属性?
【发布时间】:2016-04-18 18:50:39
【问题描述】:
console.log(Number) //returns constructor function Number(), not an Object
console.log(Number.NaN) //returns the value of property NaN

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

感谢您的解释!

【问题讨论】:

  • 属性可以随时添加到任何对象。它们与构造函数无关。
  • 而函数对象。

标签: javascript object constructor numbers


【解决方案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

【讨论】:

    猜你喜欢
    • 2018-06-11
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    相关资源
    最近更新 更多