Je comprends la différence dans comportement. Date()
renvoie une chaîne représentant la date actuelle et new Date()
renvoie une instance de l'objet Date dont je peux appeler les méthodes. Mais je ne sais pas pourquoi. JavaScript est prototypé, donc Date
est une fonction et un objet qui a des fonctions membres (méthodes) qui sont aussi des objets. Mais je n'ai pas écrit ou lu de JavaScript qui se comporte de cette façon, et j'aimerais comprendre la différence.Pourquoi ai-je besoin du mot-clé `new` pour une instance de` Date` en JavaScript?
Quelqu'un peut-il me montrer un exemple de code d'une fonction qui a une méthode, renvoie une instance avec le nouvel opérateur, et sort un String lorsqu'il est appelé directement? c'est-à-dire comment se passe-t-il quelque chose comme ça?
Date(); // returns "Fri Aug 27 2010 12:45:39 GMT-0700 (PDT)"
new Date(); // returns Object
new Date().getFullYear(); // returns 2010
Date().getFullYear(); // throws exception!
Demande très spécifique, je sais. J'espère que c'est une bonne chose. :)
Re * pourquoi *: c'est un Hango malheureux ver de l'implémentation JavaScript originale qui l'a fait dans la spécification ECMAScript: http://bclary.com/2004/11/07/#a-15.9.2 –
Ooh! Merci. J'aime le contexte et l'histoire. C'est bon _why_. :) –
Merci @Crescent. J'ai incorporé ceci dans ma réponse pour l'exhaustivité. –