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/