Ce qui se passe est que vous devez d'abord créer un nouvel objet Date, et puis le convertir en un nombre.
TL;DR-version
Sous le capot, le moteur d'exécution des appels valueOf
méthode de Date
objet.
Commentaire: version
de retour d'un nouveau Date
objet
var d = new Date;
utiliser le Unaire + Opérateur
var n = +d;
Unaire + opérateur appelle l'interne ToNumber avec d
.
9.3 ToNumber
Prend une entrée argument et si le type d'argument est - Object
(Date) appel interne ToPrimitive avec entrée et indicateur de Nombre.
9.1 ToPrimitive
prend une entrée argument et un argument optionnel PreferredType.
si le type d'entrée est l'Objet de la spécification dit:
Renvoie une valeur par défaut pour l'Objet. La valeur par défaut d'un objet
est extrait par l'appel de la [[Valeur par défaut]] méthode interne de la
l'objet, en passant l'option soupçon PreferredType. Le comportement de l'
[[Valeur par défaut]] méthode interne est défini par cette spécification de
tous les ECMAScript objets dans 8.12.8.
8.12.8 [[Valeur par défaut]] (astuce)
Lors de la [[Valeur par défaut]] méthode interne de O est appelée avec indicateur de
Nombre, les mesures suivantes sont prises:
- Laissez valueOf être le résultat de l'appel de la [[Get]] méthode interne de l'objet O avec l'argument "valueOf".
- Si IsCallable(valueOf) est vrai, alors,
- Laissez-val être le résultat de l'appel de la [[Appel]] interne méthode valueOf, avec O comme cette valeur et une liste d'arguments vide.
- Si val est une valeur primitive, de retour de val.
Dans le code de cette environ se traduit par:
var val,
type,
valueOf = O.Get( 'valueOf' );
if ( typeof valueOf === 'function' ) {
val = valueOf.call( O );
type = typeof val;
if ( val == null || type === 'boolean' || type === 'number' || type === 'string' ) {
return val;
}
}
[[Get]]
ting la méthode interne de O avec l'argument "valueOf" signifie le retour de la Date.le prototype.valueOf.
15.9.5.8 Date.le prototype.valueOf ( )
L' valueOf
de la fonction renvoie un Nombre, qui est cette valeur de temps.
Si nous allons maintenant revenir à 9.3 ToNumber nous voyons que ToNumber appelle elle-même, cette fois, avec le retour de l' val
de 8.12.8 [[Valeur par défaut]] (note) comme primValue
. Si le type d'argument est le Nombre qu'il dit:
Le résultat est égal à l'argument d'entrée (pas de conversion).
La Fin