Maison >interface Web >js tutoriel >Explication détaillée des connaissances Javascript Objects_Basic

Explication détaillée des connaissances Javascript Objects_Basic

WBOY
WBOYoriginal
2016-05-16 16:37:301346parcourir

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
 
Vous pouvez utiliser in ou hasOwnProperty pour déterminer s'il existe une propriété dans l'objet.

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

Lors de l'utilisation de for..in, les propriétés de la chaîne de prototypes seront parcourues. L'ordre de parcours est le parcours en largeur d'abord

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

Writable (inscriptible) indique si les propriétés de l'objet sont accessibles en écriture

Par exemple


var o = {
  foo : 'bar'
}
Object.defineProperty(o, "foo", { writable : false });
o.foo = 'world';
console.log(o.foo);//仍然输出bar
Enumerable indique si les propriétés de l'objet sont énumérables

Par exemple

L'énumérable des attributs tels que la longueur dans Array est faux, donc,

for (p in Array) {
  console.log(p);
}
Ne produit rien

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 });

Get représente la méthode d'obtention des propriétés d'un objet

Set représente une méthode de définition des propriétés d'un objet

Exemple


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.stringify

valueOf 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

Un objet exécutable peut être créé via les méthodes suivantes


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
peut être utilisé comme objet (avec une chaîne de prototypes), ou comme fonction à appeler directement

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn