SOURCE

console 命令行工具 X clear

                    
>
console
function Model(value) {
    this._value = typeof value === 'undefined'?'':value
    this._listeners = []
};
Model.prototype.set = function(value) {
    var self =this
    self._value = value
    setTimeout(() =>{
        self._listeners.forEach( listener => {
            listener.call(self, value)
        })
    })
};
Model.prototype.watch = function(listener) {
    this._listeners.push(listener)
};
Model.prototype.bind = function(node) {
    this.watch((value)=> {
        node.innerHtml = value
    })
};
function Controller(callback) {
    var models = {}
    var views = Array.prototype.slice.call(document.querySelectorAll('[data-bind]'),0)
    views.forEach( view => {
        var modelName = view.getAttribute('data-bind');
        models[modelName] = models[modelName]||new Model()
        debugger
        (models[modelName] = models[modelName]||new Model()).bind(view);
    })
    callback.call(this, models)
}

new Controller((models) => {
    console.log(models)
    var date = new Date()
    models.hour.set(date.getHours())
})
<span data-bind='hour'></span>:<span data-bind='minute'></span>:<span data-bind='second'></span>