2013-06-17 1 views
1
<script> 
var num = new Number(43); 
console.log(num); 
</script> 

Selon le tutoriel ici: http://www.w3schools.com/jsref/jsref_obj_number.aspcomment fonctionne new Number (value) dans js?

Syntax 
var num = new Number(value); 
Note: If the value parameter cannot be converted into a number, it returns NaN (Not-a-Number). 

Question:

En firebug-> console, il montre: Number {}, pas ce que je pense Number {43}, peu importe quel numéro je mets dans new Number(value) ; il montre toujours: Number {} alors quel est le but d'utiliser new Number(value)? Comment ça marche? BTW, j'ai googlé en ligne, mais je n'ai pas trouvé une bonne explication.

+3

[référence obligatoire w3fools] (http://w3fools.com) – zzzzBov

+0

http://www.w3fools.com/ lol @zzzzBov semble avoir gagné la "course". – Hogan

+0

C'est juste un wrapper d'objet pour un nombre, si vous voulez connaître la valeur du nombre enveloppé, appelez 'valuOf'. – Musa

Répondre

0

Il existe une différence entre une primitive de nombre et un objet numérique. Lorsque vous utilisez le mot clé new, vous créez un nouvel objet nombre, ce que vous voyez. Vous pouvez obtenir la valeur de l'objet numéro avec valueOf, qui retourne la primitive:

> var n = new Number(42); 
> n.valueOf() 
42 
+0

De même, '42' est-il stocké comme une propriété dans l'objet nombre? – user2294256

+0

@ user2294256: Pas comme une propriété comme 'n.something = 12' est, mais oui, en quelque sorte. – Blender

+0

après que cette ligne s'exécute: var n = new Number (42); y a-t-il un moyen de voir quel est le contenu de l'objet Number? Je veux voir comment '42' est stocké dans l'objet numéro? – user2294256

1

Number(43) est un nombre primitif mais new Number(43) créerez un objet à partir de ce numéro primitif. L'affichage Number {} est juste comment la console Chrome affiche un objet comme ça.

new Number(43) continuera à «se comporter» comme un nombre. Dans la console:

var num = new Number(43); // Number {} 
num == 43 // true 
num + 5 // 48 
num === 43 // false, since the types don't match. 

Pour plus d'informations sur la façon dont new travaux: How does the new operator work in JavaScript?. Si vous voulez simplement une primitive numérique, n'utilisez pas new.

Questions connexes