Maison >interface Web >js tutoriel >Explication détaillée des connaissances Javascript Objects_Basic
Créer un objet
•Quantité directe de l'objet
var o = { foo : "bar" }
•Constructeur
var o = new Object();
•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.
•Lors de l'interrogation de 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 soit trouvé >.
•Lors de l'attribution d'une valeur à l'attribut x de l'objet o, si o a déjà un propre attribut x, modifiez la valeur de x si l'attribut x n'existe pas dans o, créez un attribut x pour o et attribuez-le. une valeur•En d'autres termes, la chaîne de prototypes ne fonctionnera que lors des requêtes.
var O = { x : 1 }; function P() { this.y = 2; } P.prototype = O; var t = new P(); console.log(t); console.log('x' in t);//true console.log(t.hasOwnProperty('x'));//false
Propriétés de l'objet
•Propriétés des objets de parcours
Vous pouvez utiliser for..in pour parcourir les propriétés d'un objet
Ainsi, en utilisant hasOwnProperty, vous pouvez déterminer s'il s'agit de la propre propriété de l'objet.
•Caractéristiques des attributs des objets
Utilisez Object.getOwnPropertyDescriptor() pour obtenir le descripteur d'une propriété spécifique d'un objet
Par exemple
var o = { foo : 'bar' } Object.defineProperty(o, "foo", { writable : false }); o.foo = 'world'; console.log(o.foo);//仍然输出bar
Par exemple
L'énumérable des attributs tels que la longueur dans Array est faux, donc,
for (p in Array) { console.log(p); }
Configurabilité (configurable) indique la configurabilité et l'énumération des propriétés qui peuvent être modifiées
Ces propriétés de configuration peuvent être définies à l'aide de Object.defineProperties.
Object.defineProperty(o, "foo", { writable : false });
Set représente une méthode de définition des propriétés d'un objet
var book = { _year: 2004, edition: 1 }; Object.defineProperty(book, "year", { get: function () { console.log('get year'); return this._year; }, set: function (newValue) { console.log('set year'); if (newValue > 2004) { this._year = newValue; this.edition += newValue - 2004; } } }); book.year = 2005;//控制台输出‘set year' console.log(book.year);//控制台输出‘get year'和year的值
Méthodes objets
toString convertit l'objet en chaîne. La conversion par défaut sera quelque chose comme [object Object], donc si vous devez le convertir au format json, vous pouvez utiliser JSON.stringifyvalueOf est utilisé lorsque les objets doivent être convertis en d'autres types. Encore une fois, il n'y a pas grand chose à dire sur la conversion par défaut.
Objet exécutable
function 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);//function