Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. Référence
  4. Objets natifs standards
  5. Object
  6. Object.seal()

Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in EnglishAlways switch to English

Object.seal()

Baseline Widely available

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis ⁨juillet 2015⁩.

La méthodeObject.seal() scelle un objet afin d'empêcher l'ajout de nouvelles propriétés, en marquant les propriétés existantes comme non-configurables. Les valeurs des propriétés courantes peuvent toujours être modifiées si elles sont accessibles en écriture.

Exemple interactif

const object1 = {  property1: 42,};Object.seal(object1);object1.property1 = 33;console.log(object1.property1);// Expected output: 33delete object1.property1; // Cannot delete when sealedconsole.log(object1.property1);// Expected output: 33

Syntaxe

js
Object.seal(obj);

Paramètres

obj

L'objet à sceller. Ce peut être n'importe quelle valeur qui n'ait pasun type primitif.

Valeur de retour

L'objet qui est scellé.

Description

Par défaut, les objets sontextensibles (ce qui signifie que de nouvelles propriétés peuvent leur être ajoutées). Sceller un objet empêche l'ajout de nouvelles propriétés et marque les propriétés existantes comme non-configurables. Ainsi, l'ensemble de propriétés de l'objet devient fixé et immuable. Le fait de rendre les propriétés non-configurables empêche également de transformer des propriétés de données en accesseurs et vice versa. Cela n'empêche pas de modifier la valeur des propriétés. Toute tentative de suppression ou d'ajout de propriétés à un objet qui est scellé, de conversion d'une propriété de données en accesseurs ou vice versa échouera, soit de manière silencieuse soit en lançant une exceptionTypeError (la plupart du temps enmode strict.

La chaîne de prototypes reste la même. Cependant, la propriétéObject.prototype.__proto__ (Obsolète ) est scellée également.

Exemples

js
var obj = {  prop: function () {},  toto: "truc",};// On peut ajouter de nouvelles propriétés// Les propriétés existantes peuvent être// changées ou retiréesobj.toto = "machin";obj.blop = "blip";delete obj.prop;var o = Object.seal(obj);o === obj; // trueObject.isSealed(obj); // true// On peut toujours changer la valeur// d'une propriété d'un objet scelléobj.toto = "moh";// Mais on ne peut pas convertir les données// en accesseurs (ou vice versa)Object.defineProperty(obj, "toto", {  get: function () {    return "g";  },});// lancera une TypeError// Tout autre changement que celui d'une valeur// ne fonctionnera pasobj.coincoin = "mon canard";// la propriété n'est pas ajoutéedelete obj.toto;// la propriété n'est pas supprimée// ...en mode strict, cela lancera des TypeErrorsfunction échec() {  "use strict";  delete obj.toto; // lance une TypeError  obj.tutu = "arf"; // lance une TypeError}échec();// L'utilisation de la méthode Object.defineProperty ne fonctionnera pasObject.defineProperty(obj, "ohai", { value: 17 });// lance une TypeErrorObject.defineProperty(obj, "toto", { value: "eit" });// modifie une propriété existante

Notes

Pour ES5, si l'argument passé à la méthode n'est pas un objet (mais une valeur d'un autre type primitif), cela entraînera une exceptionTypeError. Pour ES2015, un argument qui n'est pas un objet sera traité comme un objet ordinaire scellé et la méthode renverra cet objet.

js
Object.seal(1);// TypeError : 1 n'est pas un objet (code ES5)Object.seal(1);// 1 (code ES2015)

Comparaison avecObject.freeze()

Lorsqu'on utilise la méthodeObject.freeze(), les propriétés existantes d'un objet gelé deviennent immuables. En revanche, avecObject.seal(), il est toujours possible de modifier la valeur des propriétés existantes d'un objet scellé.

Spécifications

Specification
ECMAScript® 2026 Language Specification
# sec-object.seal

Compatibilité des navigateurs

Voir aussi

Help improve MDN

Learn how to contribute

Cette page a été modifiée le par lescontributeurs du MDN.


[8]ページ先頭

©2009-2025 Movatter.jp