2017-08-11 5 views
0

J'ai un objet global CD et il a un ensemble de propriétés comme suit:Comment permettre d'ajouter la propriété sur l'objet, mais arrêter Modification ensemble de propriétés sur l'objet

window.cd = { 
    config:{ 
    title:"..." 
    } 
    a:func..., 
    b:56, 
    c:.. 
} 

Je veux utilisateur pour permettre ajouter des propriétés à cd et cd.config mais les propriétés cd.a, cd.b, cd.config.title doivent être scellées (aucune modification autorisée).

L'utilisateur ne doit pas être en mesure de supprimer ou window.cd ces propriétés aussi bien (Autres propriétés qu'il peut supprimer ou modifier).

J'ai essayé avec ce qui suit:

window.cd.a.seal(); 
window.cd.b.seal(); 
window.cd.config.title.seal(); 

mais jeté erreur suivant:

window.cd.config.title.seal is not a function

+0

'Object.seal' est une fonction https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/seal, 'String.seal' n'est pas (' window.cd.config.title' est comme tring) –

+0

Alors, comment atteindre mes exigences Je veux empêcher l'utilisateur de modifier le titre. –

+2

Vous devez sceller un objet, pas des propriétés individuelles de celui-ci. En outre, le cachetage n'empêche pas les changements dans la valeur de la propriété, il empêche seulement l'ajout ou la modification de propriétés. Peut-être que vous voulez les marquer non-écriture https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty –

Répondre

0

Un échantillon rapide prise Titre unwritable

"use strict"; 
// Use strict mode or assignments to nonwritable properties silently fail 

window.cd = { 
    config:{ 
    title:'mytitle' 
    }, 
    a:12, 
    b:56 
} 

console.log(cd.config.title) 
Object.defineProperty(cd.config,'title',{writable:false}); 
cd.config.title="Test"; // Fails, throws exception if Strict mode 
console.log(cd.config.title) 
+0

Et comment empêcher la suppression de CD .. –

+0

Object.seal (cd.config) empêchera la suppression des propriétés de configuration. –