Maison  >  Article  >  interface Web  >  Une brève analyse des deux propriétés des objets dans ECMAScript

Une brève analyse des deux propriétés des objets dans ECMAScript

不言
不言original
2018-07-17 14:52:421027parcourir

Les objets ECMAScript ont deux attributs, à savoir les attributs de données et les attributs d'accesseur. Ensuite, nous analyserons respectivement les deux attributs.

1. Attribut de données
L'attribut de données contient l'emplacement d'une valeur de données. Cet emplacement peut lire et écrire des valeurs. Les attributs de données ont 4 propriétés qui décrivent leur comportement.
[ [ Configurable ] ] Indique si l'attribut peut être redéfini en supprimant l'attribut via delete, si les caractéristiques de l'attribut peuvent être modifiées, ou si l'attribut peut être modifié en tant qu'attribut d'accès. La valeur par défaut est true
[ [ Enumerable] ] Indique si l'attribut peut être renvoyé via une boucle for-in. La valeur par défaut est true
[ [ Writable ] ] indiquant si la valeur de l'attribut peut être modifiée. La valeur par défaut est true
[ [ Value ] ] Contient la valeur d'attribut de cet attribut. Lors de la lecture des attributs, lisez à partir de cet emplacement et lors de l'écriture des attributs, enregistrez la nouvelle valeur à cet emplacement. La valeur par défaut n'est pas définie
par exemple :

var p = {};
Object.defineProperty(p, "name", {
    writable: false,
    value: 'nihao' 
})

2. Propriétés de l'accesseur
Les propriétés de l'accesseur ne contiennent pas de valeurs de données. Elles contiennent une paire de fonctions getter et setter (cependant, ces deux fonctions ne sont pas nécessaires. ) La fonction getter est appelée lors de la lecture de la propriété d'accesseur, et cette fonction est chargée de renvoyer une valeur valide. Lors de l'écriture de l'attribut accesseur, la fonction setter sera appelée et la nouvelle valeur sera transmise. Cette fonction est chargée de décider comment traiter les données
[ [ Configurable ] ] , indiquant si l'attribut peut être redéfini en supprimant l'attribut via la suppression, et si l'attribut peut être modifié en propriétés, ou si la propriété peut être modifiée pour être une propriété d'accès. La valeur par défaut est true
[ [ Enumerable] ] Indique si l'attribut peut être renvoyé via une boucle for-in. La valeur par défaut est true
[ [ Get ] ] La fonction appelée lors de la lecture des propriétés, la valeur par défaut est indéfinie
[ [ Set ] ] La fonction appelée lors de l'écriture des propriétés, la valeur par défaut est indéfinie
par exemple :

var p = {get: 0};
Object.defineProperty(p, "name", {
    get: function (){
        console.log('get');
        return this.get;
    },
    set: function (newVal) {
        console.log('set');
        this.get = newVal;
    }
})

3. Caractéristiques de la lecture des attributs
Object.getOwnPropertyDescriptor (l'objet où se trouve l'attribut, le nom de l'attribut) ;
La valeur de retour est un objet, et quatre attributs sont accessibles : configurable , énumérable, get et set Attributs,
S'il s'agit d'un attribut numérique, les attributs d'objet renvoyés incluent configurable, énumérable, inscriptible et value
Remarque :
La fonction Object.defineProperties() peut définir. plusieurs attributs
par exemple :

var p = {get: 0};
Object.defineProperties(p, {"name", {
    get: function (){
        console.log('get');
        return this.get;
    },
    set: function (newVal) {
        console.log('set');
        this.get = newVal;
    }
}, "age": {
       writable: true,
       value: 11
   }
})

Recommandations associées :

Explication détaillée des descripteurs d'attributs dans ECMAScript 5_Connaissances de base

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!

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