Maison >interface Web >js tutoriel >Comment supprimer les attributs d'un objet en javascript
En JavaScript, vous pouvez utiliser l'opérateur delete pour supprimer les attributs d'un objet. Son opérande doit être une expression d'accès aux attributs ; par exemple "var obj={x:1};delete obj.x;" . L'opérateur delete ne peut supprimer que les attributs libres, pas les attributs hérités.
L'environnement d'exploitation de ce tutoriel : système Windows 7, JavaScript version 1.8.5, ordinateur Dell G3.
L'opérateur delete peut supprimer les propriétés d'un objet. Son opérande doit être une expression d'accès à la propriété. Ce qui est surprenant, c'est que delete déconnecte uniquement l'attribut de l'objet hôte, mais n'exploite pas les attributs dans l'attribut :
delete book.author; //book不再有属性author delete book["main title"] //book不会再有属性"main title"
L'opérateur delete ne peut supprimer que les attributs libres, pas les attributs hérités (obligatoire Suppression d'une propriété héritée nécessite de le supprimer de l'objet prototype sur lequel il est défini, et cela affecte tous les objets qui héritent de ce prototype).
Remarque :
a={p:{x:1}}; b=a.p; delete a.p;
La valeur de b.x est toujours 1 après l'exécution de ce code. Étant donné que les références aux propriétés supprimées existent toujours, des fuites de mémoire peuvent survenir en raison de ce code lâche dans certaines implémentations de JavaScript. Par conséquent, lors de la destruction de l'objet, vous devez parcourir les attributs dans les attributs et les supprimer un par un.
Lorsque l'expression de suppression est supprimée avec succès ou sans aucun effet secondaire (comme la suppression d'un attribut inexistant), elle renvoie vrai. Si delete n'est pas une expression d'accès à la propriété, delete renvoie également true.
o = {x:1}; delete o.x; //删除x,返回true。 delete o.x; //什么都没做(x已经不存在了),返回true delete o.toString; //什么也没做(toString是继承来的),返回true delete 1; //无意义,返回true
delete ne peut pas supprimer les propriétés dont la configurabilité est fausse (bien que les propriétés configurables des objets non extensibles puissent être supprimées). Certaines propriétés des objets intégrés ne sont pas configurables, telles que les propriétés des objets globaux créés via des déclarations de variables et des déclarations de fonctions. En mode strict, la suppression d'une propriété non configurable générera une erreur de type. En mode non strict, l'opérateur delete renvoie false dans ces cas :
delete Object.prototype; //不能删除,属性是不可配置的 var x = 1; delete this.x; //不能删除这个全局变量, function f(){} delete this.f; //同样也不能删除全局函数
Lors de la suppression des éléments configurables et des propriétés de l'objet global en mode non strict, vous pouvez omettre l'objet global Pour référence, juste suivre directement l'opérateur delete du nom de l'attribut à supprimer :
this.x = 1; //创建一个可配置的全局属性(没有用var) delete x; //将它删除
Cependant, en mode strict, si delete est suivi d'un opérande illégal (comme x), un rapport sera rapporté Une erreur de syntaxe, donc l'objet spécifié et ses propriétés doivent être affichés :
delete x; //在严格模式下报语法错误 delete this.x; //正常工作
[Apprentissage recommandé : Tutoriel avancé javascript]
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!