Créer un objet
• Mesure directe des objets
var o = {foo: "bar"}• Fonction du constructeur
var o = nouvel objet ();
• Héritage prototype
var p = object.create (o);
Héritage de classe
Les objets JavaScript ont leurs propres propriétés et propriétés héritées.
• Lorsque vous interrogez l'attribut x de l'objet O, recherchez d'abord l'attribut x dans o. S'il n'est pas trouvé, recherchez l'attribut x dans l'objet prototype de O jusqu'à ce que X ou un objet dont le prototype est nul est trouvé.
• Lorsque vous attribuez une valeur à l'attribut x de l'objet O, s'il y a déjà une propriété x dans o, modifiez la valeur de x. S'il n'y a pas de propriété x dans O, créez un attribut x pour O et attribuez une valeur.
• Autrement dit, la chaîne prototype ne fonctionnera que lors de la requête.
var o = {x: 1}; fonction p () {this.y = 2; } P.prototype = o; var t = new p (); console.log (t); console.log ('x' dans t); // true console.log (t.hasownproperty ('x')); // falseVous pouvez utiliser ou HasownProperty pour déterminer s'il existe des propriétés dans l'objet.
Propriétés de l'objet
• Transfert via les propriétés des objets
Vous pouvez utiliser pour ... en traversant les propriétés d'un objet
Lorsque vous utilisez pour..in, itère sur les propriétés de la chaîne prototype. L'ordre de traversée est de traverser avec une priorité d'étendue
Par conséquent, l'utilisation de HasownProperty peut déterminer s'il s'agit d'un propre attribut d'un objet.
• Propriétés des propriétés des objets
Utilisez object.getownpropertyDescriptor () pour obtenir le descripteur de la propriété spécifique à l'objet
Writable signifie si l'attribut d'objet est écrite
Par exemple
var o = {foo: 'bar'} object.defineproperty (o, "foo", {writeable: false}); o.foo = 'world'; console.log (o.foo); // barre de sortie encore de sortieÉnumérable signifie si l'attribut objet est énumérable
Par exemple
L'énumérable de la longueur et d'autres attributs de la table est faux, donc
pour (p en array) {console.log (p);}Rien de sortie
Configurable signifie si la configurabilité et l'énumération des propriétés peuvent être modifiés.
Ces propriétés de configuration peuvent être définies à l'aide de object.defineproperties.
Object.defineProperty (o, "foo", {withing: false});
Obtenir signifie une méthode pour obtenir des propriétés d'objet
SET représente une méthode pour définir les propriétés des objets
Exemple
var book = {_year: 2004, édition: 1}; object.defineproperty (livre, "année", {get: function () {console.log ('get year'); return this._year;}, set: function (newValue) {console.log ('set year'); if (newvalue> 2004) {this._year = neweue; NewValue - 2004;}}}); book.year = 2005; // la sortie de la console 'set year'console.log (book.year); //Méthode d'objet
Tostring convertit les objets en chaînes. La conversion par défaut sera quelque chose comme [objet objet], donc si vous avez besoin de le convertir au format JSON, vous pouvez utiliser JSON.Stringify
La valeur de la valeur doit être utilisée lors de la conversion d'objets en d'autres types. De même, il n'y a rien la peine de dire sur la conversion par défaut.
Objet exécutable
Vous pouvez créer un objet exécutable par la méthode suivante
Fonction Bar (o) {var f = function () {return "Hello World!"; } o .__ proto__ = f .__ proto__; f .__ proto__ = o; return f;} var o = {x: 5}; var foo = bar (o); console.log (foo ()); console.log (foo.x); console.log (typeof foo); // fonctionIl peut être utilisé comme objet (avec une chaîne prototype) ou comme une fonction pour l'appeler directement