Les fonctions, chaînes et nombres sont-ils des objets en JavaScript ?
La réputation de JavaScript pour déclarer presque tout comme un objet peut être déroutante, en particulier pour débutants. S'il est vrai que les objets, avec leurs méthodes et leurs propriétés, jouent un rôle important, les primitives comme les chaînes, les nombres et les fonctions se comportent quelque peu différemment.
Valeurs primitives par rapport aux objets
En JavaScript, les valeurs primitives sont immuables et ne sont pas accessibles via la notation par points. Cependant, JavaScript fournit des objets wrapper (String, Number et Boolean) qui dotent les primitives de méthodes et de propriétés de type objet.
Objets Wrapper
Les objets Wrapper sont créés derrière les scènes lors de l'accès aux propriétés des primitives. Par exemple, dans le code :
var s = "foo"; var sub = s.substring(1, 2);
JavaScript crée silencieusement un objet String, appelle la méthode substring(), puis supprime l'objet. La sous-variable contient désormais la chaîne primitive "o".
Bien qu'il puisse sembler que vous puissiez attribuer des propriétés aux primitives, ces affectations sont en réalité effectuées sur les objets wrapper qui sont immédiatement supprimés. Par conséquent, la récupération de telles propriétés donne un résultat indéfini, comme le démontre l'exemple suivant :
var s = "foo"; s.bar = "cheese"; alert(s.bar); // undefined
Fonctions en tant qu'objets
Contrairement aux primitives, les fonctions sont des objets à part entière qui héritent à partir de l'objet. Elles peuvent avoir des propriétés, comme le montre ce code :
function foo() {} foo.bar = "tea"; alert(foo.bar); // tea
En résumé, les primitives n'ont pas intrinsèquement de caractéristiques d'objet en JavaScript. Cependant, les objets wrapper fournissent une façade de comportement semblable à celui d'un objet, tandis que les fonctions sont de véritables objets qui peuvent interagir avec des propriétés et des méthodes. Cette distinction est essentielle pour comprendre le système de types de JavaScript et prendre des décisions de codage éclairées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!