я должен использовать объектные литералы или функции конструктора?

Должен ли я использовать объектные литералы или функции конструктора?

Если у вас нет поведения, связанного с объектом (т.е. если объект является просто контейнером для данных / состояния), я бы использовал литерал объекта.

 var data = { foo: 42, bar: 43 }; 

Примените принцип KISS . Если вам не нужно ничего, кроме простого контейнера данных, используйте простой литерал.

Если вы хотите добавить поведение к своему объекту, вы можете использовать конструктор и добавлять методы к объекту во время конструирования или предоставить своему классу прототип.

 function MyData(foo, bar) { this.foo = foo; this.bar = bar; this.verify = function () { return this.foo === this.bar; }; } // or: MyData.prototype.verify = function () { return this.foo === this.bar; }; 

Подобный класс также действует как схема для вашего объекта данных: теперь у вас есть своего рода контракт (через конструктор), какие свойства объект инициализирует / содержит. Свободный литерал — это просто аморфный блок данных.

Вы могли бы также иметь внешнюю функцию verify которая действует на простой старый объект данных:

 var data = { foo: 42, bar: 43 }; function verify(data) { return data.foo === data.bar; } 

Однако это не является благоприятным в отношении инкапсуляции: в идеале все данные поведение, связанные с объектом, должны жить вместе.

Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector