2016-04-18 84 views
0
console.log(Number) //returns constructor function Number(), not an Object 
console.log(Number.NaN) //returns the value of property NaN 

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

感谢您的任何解释!

+4

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

+4

和功能_are_对象。 – SLaks

+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 
+0

感谢您的时间和回应! –

相关问题