Je tente de sceller une propriété d'objet.Comment empêcher que les propriétés de l'objet ne soient pas étendues en javascript?
Ma question est, ici j'ai donné Object.seal (personObject), cet objet particulier est scellé et ne permet pas de configurer ou faire des extensions dans cet objet, mais comme je ne l'ai pas mentionné sur personObject_2, il permet de étendre ou configurer
Comment puis-je faire sur prototype .Je veux dire comme une catégorie de personnes de type devrait avoir/respecter cette seal.Can nous obtenons un tel comportement
"use strict";
var personModule=(function (module) {
var person=function (fname,lname) {
Object.defineProperty(this,'firstName',{
get:function() {
return fname;
}
,set:function (newValue) {
fname=newValue;
},
configurable:true
});
Object.defineProperty(this,'lastName',{
get:function() {
return lname;
}
,set:function (newValue) {
lname=newValue;
},
configurable:true
});
Object.defineProperty(this,'fullName',{
get:function() {
return fname+lname;
},
configurable:true
});
}
module.person=person;
return module;
})(personModule || {});
var personObject=new personModule.person("Raju","Rani");
console.log(personObject.fullName);
Object.seal(personObject);
//delete personObject.firstName;-->It throws error here
var personObject2=new personModule.person("Shiva","Kumar");
delete personObject2.firstName;
console.log(personObject2.firstName);
Merci
Mettez 'Object.seal (this) 'dans le constructeur? – 4castle
J'ai essayé même avec le prototype ... on dirait que ça marche – Srisa
Et aussi mettre Object.freeze (this)? – Anson