| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Object/seal | [Back] [Original] |
Get to know MDN better
Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.
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 mthode Object.seal() scelle un objet afin d'empcher l'ajout de nouvelles proprits, en marquant les proprits existantes comme non-configurables. Les valeurs des proprits courantes peuvent toujours tre modifies si elles sont accessibles en criture.
const object1 = {
property1: 42,
};
Object.seal(object1);
object1.property1 = 33;
console.log(object1.property1);
// Expected output: 33
delete object1.property1; // Cannot delete when sealed
console.log(object1.property1);
// Expected output: 33
Object.seal(obj);
L'objet sceller. Ce peut tre n'importe quelle valeur qui n'ait pas un type primitif.
L'objet qui est scell.
Par dfaut, les objets sont extensibles (ce qui signifie que de nouvelles proprits peuvent leur tre ajoutes). Sceller un objet empche l'ajout de nouvelles proprits et marque les proprits existantes comme non-configurables. Ainsi, l'ensemble de proprits de l'objet devient fix et immuable. Le fait de rendre les proprits non-configurables empche galement de transformer des proprits de donnes en accesseurs et vice versa. Cela n'empche pas de modifier la valeur des proprits. Toute tentative de suppression ou d'ajout de proprits un objet qui est scell, de conversion d'une proprit de donnes en accesseurs ou vice versa chouera, soit de manire silencieuse soit en lanant une exception TypeError (la plupart du temps en mode strict.
La chane de prototypes reste la mme. Cependant, la proprit Object.prototype.__proto__ ( ) est scelle galement.
var obj = {
prop: function () {},
toto: "truc",
};
// On peut ajouter de nouvelles proprits
// Les proprits existantes peuvent tre
// changes ou retires
obj.toto = "machin";
obj.blop = "blip";
delete obj.prop;
var o = Object.seal(obj);
o === obj; // true
Object.isSealed(obj); // true
// On peut toujours changer la valeur
// d'une proprit d'un objet scell
obj.toto = "moh";
// Mais on ne peut pas convertir les donnes
// 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 pas
obj.coincoin = "mon canard";
// la proprit n'est pas ajoute
delete obj.toto;
// la proprit n'est pas supprime
// ...en mode strict, cela lancera des TypeErrors
function chec() {
"use strict";
delete obj.toto; // lance une TypeError
obj.tutu = "arf"; // lance une TypeError
}
chec();
// L'utilisation de la mthode Object.defineProperty ne fonctionnera pas
Object.defineProperty(obj, "ohai", { value: 17 });
// lance une TypeError
Object.defineProperty(obj, "toto", { value: "eit" });
// modifie une proprit existante
Pour ES5, si l'argument pass la mthode n'est pas un objet (mais une valeur d'un autre type primitif), cela entranera une exception TypeError. Pour ES2015, un argument qui n'est pas un objet sera trait comme un objet ordinaire scell et la mthode renverra cet objet.
Object.seal(1);
// TypeError : 1 n'est pas un objet (code ES5)
Object.seal(1);
// 1 (code ES2015)
Object.freeze()Lorsqu'on utilise la mthode Object.freeze(), les proprits existantes d'un objet gel deviennent immuables. En revanche, avec Object.seal(), il est toujours possible de modifier la valeur des proprits existantes d'un objet scell.
| Spcification |
|---|
| ECMAScript 2027 LanguageSpecification # sec-object.seal |
Object.isSealed()Object.preventExtensions()Object.isExtensible()Object.freeze()Object.isFrozen()Cette page a t modifie le 22 mai 2026 par les contributeurices du MDN.
ObjectObject.assign()Object.create()Object.defineProperties()Object.defineProperty()entries()Object.freeze()Object.fromEntries()Object.getOwnPropertyDescriptor()Object.getOwnPropertyDescriptors()Object.getOwnPropertyNames()Object.getOwnPropertySymbols()Object.getPrototypeOf()Object.groupBy()Object.hasOwn()Object.is()Object.isExtensible()Object.isFrozen()Object.isSealed()Object.keys()Object.preventExtensions()Object.seal()Object.setPrototypeOf()Object.values()Object.prototype.__defineGetter__()Object.prototype.__defineSetter__()Object.prototype.__lookupGetter__()Object.prototype.__lookupSetter__()Object.prototype.hasOwnProperty()Object.prototype.isPrototypeOf()Object.prototype.propertyIsEnumerable()Object.prototype.toLocaleString()Object.prototype.toString()Object.prototype.valueOf()Object/FunctionObject.prototype.__defineGetter__()Object.prototype.__defineSetter__()Object.prototype.__lookupGetter__()Object.prototype.__lookupSetter__()Object.prototype.hasOwnProperty()Object.prototype.isPrototypeOf()Object.prototype.propertyIsEnumerable()Object.prototype.toLocaleString()Object.prototype.toString()Object.prototype.valueOf()Certaines parties de ce contenu sont protges par le droit d'auteur 19982026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.
| Web Proxy Viewer | New URL | Original Page |