Maison  >  Article  >  interface Web  >  Comment ajouter dynamiquement des attributs en javascript

Comment ajouter dynamiquement des attributs en javascript

PHPz
PHPzoriginal
2023-04-21 09:08:112051parcourir

En Javascript, nous avons souvent besoin d'ajouter dynamiquement des attributs à un objet. De manière générale, nous pouvons utiliser l'opérateur point ou l'opérateur crochet pour ajouter des attributs à un objet.

Par exemple, nous pouvons ajouter le nom de l'attribut à un objet personne de la manière suivante :

let person = {};

// 使用点操作符
person.name = "Tom";

// 使用中括号操作符
person["name"] = "Tom";

Cependant, pour certains scénarios qui nécessitent l'ajout dynamique d'attributs, cette façon d'écrire n'est pas assez flexible. Par exemple, nous devons ajouter dynamiquement des attributs basés sur les données saisies par l'utilisateur. À l'heure actuelle, nous pouvons utiliser la méthode Object.defineProperty() fournie par Javascript pour ajouter dynamiquement des propriétés.

Object.defineProperty() est une API fournie avec Javascript et peut être utilisée pour définir les propriétés d'un objet. Il reçoit trois paramètres : l'objet pour définir l'attribut, le nom de l'attribut et un objet de description. Parmi eux, l'objet description contient quelques propriétés supplémentaires pour contrôler le comportement des propriétés.

Plus précisément, l'objet description peut contenir les attributs suivants :

  1. value : la valeur de l'attribut ;
  2. enumerable : indiquant si l'attribut est énumérable. Si cet attribut est faux, l'attribut n'apparaîtra pas dans la boucle for...in et la méthode JSON.stringify() ne sérialisera pas l'attribut
  3. writable : Indique si l'attribut est accessible en écriture ; Si l'attribut est faux, la valeur de l'attribut ne peut pas être modifiée ;
  4. configurable : indique si l'attribut est configurable. Si cette propriété est fausse, la propriété ne peut pas être supprimée et ne peut pas être modifiée en tant que propriété d'accesseur.

Maintenant, regardons un exemple spécifique. Supposons que nous devions ajouter dynamiquement des propriétés en fonction des données entrées par l'utilisateur. Nous pouvons définir un utilisateur objet, puis utiliser Object.defineProperty() pour ajouter dynamiquement des propriétés.

let user = {};

// 使用Object.defineProperty()动态增加属性
Object.defineProperty(user, "name", {
  value: "Tom",
  enumerable: true,
  writable: true,
  configurable: true
});

// 输出属性值
console.log(user.name); // Tom

Dans l'exemple ci-dessus, nous avons utilisé Object.defineProperty() pour définir une propriété nommée name et définir la valeur de la propriété sur Tom. Dans le même temps, nous définissons l'énumération, l'écriture et la configurabilité des propriétés sur true.

Il est à noter qu'une fois qu'une propriété est définie à l'aide de Object.defineProperty(), si la propriété configurable de la propriété est définie sur false, l'énumération, l'écriture et la configurabilité de la propriété ne seront plus modifiées par la suite. Par conséquent, lorsque vous utilisez Object.defineProperty() pour ajouter dynamiquement des propriétés, vous devez examiner attentivement les caractéristiques des propriétés et déterminer si des modifications ultérieures sont autorisées.

En plus d'utiliser Object.defineProperty(), nous pouvons également utiliser la méthode Object.defineProperties() pour ajouter dynamiquement plusieurs propriétés. La syntaxe de cette méthode est similaire à Object.defineProperty(), sauf que le deuxième paramètre n'est plus un objet de description, mais un objet, et chacune de ses propriétés représente une propriété à ajouter. Par exemple :

let user = {};

// 使用Object.defineProperties()动态增加多个属性
Object.defineProperties(user, {
  name: {
    value: "Tom",
    enumerable: true,
    writable: true,
    configurable: true
  },
  age: {
    value: 18,
    enumerable: true,
    writable: false,
    configurable: false
  }
});

// 输出属性值
console.log(user.name); // Tom
console.log(user.age); // 18

Dans l'exemple ci-dessus, nous avons utilisé Object.defineProperties() pour définir deux propriétés, name et age, et définir leurs propriétés respectivement.

Pour résumer, Javascript offre diverses façons d'ajouter dynamiquement des attributs. L'utilisation de l'opérateur point ou de l'opérateur crochet peut satisfaire certains scénarios simples, tandis que l'utilisation de Object.defineProperty() et Object.defineProperties() peut fournir un moyen plus flexible de définir des propriétés, adapté à certains scénarios spéciaux. Lorsque nous devons ajouter dynamiquement des attributs basés sur les données saisies par l'utilisateur, nous pouvons choisir d'utiliser ces deux API pour y parvenir.

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