Существует функция сортировки, функция ES5.1 Object.freeze
может предотвратить добавление новых свойств, а также предотвращать изменение существующих свойств.
Рабочий пример:
var o = {
a: 123
};
o.b = 456;
// Freeze the object.
Object.freeze(o);
// Log the object.
console.log(o);
// These do nothing, properties do not change and are not added.
o.b = 0;
o.c = 789;
// Log the object.
console.log(o);
Это, как говорится, JavaScript супер динамический язык, поэтому делает это широко может рассматриваться антишаблоном.
Если замораживание является слишком ограничивающим, другие варианты включают Object.preventExtensions
и Object.seal
, в зависимости от того, что вы хотите предотвратить.
Альтернативно ES6 Proxy objects может предложить больше контроля над тем, какие свойства могут быть добавлены или изменены.
Нет, нет. –
Ну, это JS для ya :-) – 1sloc
Если вы действительно просто пытаетесь предотвратить или обнаружить случайные проблемы с типизацией с неправильным назначением имени свойства (как предлагает один из ваших комментариев) на всех ваших объектах, тогда Javascript действительно не поддерживайте это и, как правило, не согласуетесь с тем, как вы обычно используете Javascript. Как было сказано в другом месте, вы можете использовать 'Object.freeze()', 'Object.seal()', но это, скорее всего, мешает нормальной работе объекта. Если вы умираете за эту функцию, возможно, вы предпочтете использовать что-то вроде TypeScript. – jfriend00