Нашел незнакомый для себя способ определения методов класса в JS.
function (window) {
'use strict';
/**
* Creates a new Model instance and hooks up the storage.
*
* @constructor
* @param {object} storage A reference to the client side storage class
*/
function Model(storage) {
this.storage = storage;
}
/**
* Creates a new todo model
*
* @param {string} [title] The title of the task
* @param {function} [callback] The callback to fire after the model is created
*/
Model.prototype.create = function (title, callback) {
title = title || '';
callback = callback || function () {};
var newItem = {
title: title.trim(),
completed: false
};
this.storage.save(newItem, callback);
};
Для чего здесь используется Model.prototype.create? Я знаю, что в JS используется прототипное костыльное наследование, при котором поля и методы ищутся сначала в текущем объекте, а потом в том объекте, который указан в proto или prototype. А если prototype не инициализирован объектом, но мы вписываем туда методы, куда эти методы попадают? Что это за идиома?
Сборка персонального компьютера от Artline: умный выбор для современных пользователей