JS Prototype наследование и определение методов

146
11 мая 2018, 11:45

Нашел незнакомый для себя способ определения методов класса в 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 не инициализирован объектом, но мы вписываем туда методы, куда эти методы попадают? Что это за идиома?

READ ALSO
Стилизация scroll c условиями

Стилизация scroll c условиями

Как стилизовать оптимально скролл? Есть еще условия

182
Ошибка в плагине AudioPlayer js

Ошибка в плагине AudioPlayer js

Подключил плагин для стилизации аудиоплеера, все работает, но выдает ошибки, иногда их может быть больше, а иногда меньше, как их исправить?

140
autoresize textarea в Materialize

autoresize textarea в Materialize

В официальной документации Materialize указано, что для автоматического увеличения высоты textarea необходимо вызвать $('#log')trigger('autoresize');

140
Z-Order маркеров при кластеризации

Z-Order маркеров при кластеризации

Есть такой код (по непонятным причинам сниппет его не запускает)

149