console.log(Number) //returns constructor function Number(), not an Object
console.log(Number.NaN) //returns the value of property NaN
是否意味着,在 Number.NaN 中,属性 NaN 是构造函数数字的属性?我正在学习对象,我认为属性和方法是由构造函数添加到对象中的。
感谢任何解释!
答案 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