Книга: Выразительный JavaScript
Объекты в качестве интерфейсов
Объекты в качестве интерфейсов
Представьте, что нам надо добавить ещё одну функцию в наш модуль «день недели». Мы уже не можем возвращать функцию, а должны завернуть две функции в объект.
var weekDay = function() {
var names = ["Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье"];
return {
name: function(number) { return names[number]; },
number: function(name) { return names.indexOf(name); }
};
}();
console.log(weekDay.name(weekDay.number("Воскресенье")));
// ? Воскресенье
Когда модуль большой, собирать все возвращаемые значения в объект в конце функции неудобно, потому что многие возвращаемые функции будут большими, и вам было бы удобнее их записывать где-то в другом месте, рядом со связанным с ними кодом. Удобно объявить объект (обычно называемый exports
) и добавлять к нему свойства каждый раз, когда нам надо что-то экспортировать. В следующем примере функция модуля принимает объект интерфейса как аргумент, позволяя коду снаружи функции создать его и сохранить в переменной. Снаружи функции this
ссылается на объект глобальной области видимости.
(function(exports) {
var names = ["Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье"];
exports.name = function(number) {
return names[number];
};
exports.number = function(name) {
return names.indexOf(name);
};
})(this.weekDay = {});
console.log(weekDay.name(weekDay.number("Четверг")));
// ? Четверг
- ЧАСТЬ IV. База данных и ее объекты.
- Физические объекты
- Объекты без прототипов
- 1. Качественный микрофон
- Объекты базы данных
- Форматирующие объекты XSL-FO
- Практическая работа 10. Объекты на Рабочем столе
- Объекты WordArt
- Практическая работа 41. Графические объекты в документах Word
- 12.5. Другие библиотеки для создания графических интерфейсов
- Применение лямбда-выражения в качестве задачи
- Пользовательские объекты