false.toString(); // 'false' [1, 2, 3].toString(); // '1,2,3' function Foo(){} Foo.bar = 1; Foo.bar; // 1
Une chose souvent mal comprise est que les constantes numériques ne peuvent pas être considérées comme des objets. En fait, les constantes numériques peuvent toujours être considérées comme des objets. En effet, l'analyseur Javascript fait une erreur lors de l'analyse de l'opérateur point, en le traitant comme une caractéristique à virgule flottante.
2.toString(); // déclenche SyntaxError
En fait, nous avons de nombreuses façons de faire en sorte qu'une constante numérique se comporte comme un objet.
2..toString(); // the second point is correctly recognized 2 .toString(); // note the space left to the dot (2).toString(); // 2 is evaluated first
Objet comme type de données
Les objets en Javascript peuvent être utilisés comme tables de hachage, qui contiennent principalement la correspondance entre les clés et les valeurs.
Utilisez le symbole {} pour créer un objet simple. Ce nouvel objet héritera de Object.prototype et ne contiendra pas ses propres propriétés.
var foo = {}; // a new empty object // a new object with a 'test' property with value 12 var bar = {test: 12};
Accéder aux propriétés d'un objet
Nous pouvons utiliser deux manières d'accéder aux objets Javascript, à savoir l'opérateur point et l'opérateur crochet [] .
var foo = {name: 'kitten'} foo.name; // kitten foo['name']; // kitten var get = 'name'; foo[get]; // kitten foo.1234; // SyntaxError foo['1234']; // works
Les effets des deux opérateurs sont presque les mêmes. La seule différence est que l'opérateur crochet permet le réglage dynamique des attributs et que le nom de l'attribut peut contenir des erreurs de syntaxe. (La troisième situation dans l'exemple ci-dessus a été expliquée)
Supprimer les attributs d'un objet
La seule façon de supprimer un attribut est d'utiliser delete. Définir la valeur de l'attribut sur undefined ou null supprime uniquement la valeur associée à l'attribut, et ne supprime pas réellement l'attribut lui-même.
var obj = { bar: 1, foo: 2, baz: 3 }; obj.bar = undefined; obj.foo = null; delete obj.baz; for(var i in obj) { if (obj.hasOwnProperty(i)) { console.log(i, '' + obj[i]); } }
La barre de sorties ci-dessus est indéfinie et foo null, seul baz est réellement supprimé.
Une chose à noter ici est que delete ne peut supprimer que des attributs, pas des variables. Par conséquent, nous devons développer une bonne habitude d'écrire var lors de la définition des variables. À tout moment, les variables doivent être déclarées à l'aide du mot-clé var. Parce que si vous n'écrivez pas var, la variable sera reconnue par erreur comme un nouvel attribut créé pour l'objet global.
Cet exemple donne la réponse assez clairement, a est une variable et b est juste une propriété d'un objet global.
Propriétés des objets nommés
var test = { 'case': 'I am a keyword, so I must be notated as a string', delete: 'I am a keyword, so me too' // raises SyntaxError };
Les propriétés des objets peuvent être nommées à l'aide de caractères ou de chaînes ordinaires. Également en raison d'un bug dans la conception de l'analyseur Javascript, la deuxième représentation de l'exemple ci-dessus générera une erreur dans ECMAScript 5.
La raison de l'erreur est que, comme delete est un mot-clé, il doit être nommé à l'aide d'une constante de chaîne pour s'adapter à l'ancienne version de l'analyseur Javascript.