mini-js
Version:
Mini Js is a Javascript library/framework which is inspired by vue.js, it supports two way data binding, virtual dom, directives, routing etc.
64 lines (38 loc) • 1.18 kB
JavaScript
/**
* Created by developer on 9/8/17.
*/
function set_object_setter_getter(obj, key, instance){
var property = Object.getOwnPropertyDescriptor(obj, key);
if(property && property.configurable === false){
return;
}
var val = obj[key];
Object.defineProperty(obj, key, {
enumerable: true,
configurable: true,
get: function(){
return val
},
set: function(new_value){
val = new_value;
// console.log(' setting : ', new_value, ' new arr: ', val, instance.$data);
queue_build(instance);
}
});
}
Mini.prototype.make_reactive = function(obj){
console.log(' making reactive ', obj);
var keys = Object.keys(obj), key, temp_obj;
for(var i=0; i < keys.length; i++){
key = keys[i];
temp_obj = obj[key];
if(typeof temp_obj == 'object'){
this.make_reactive(temp_obj);
}else if(Array.isArray(temp_obj)){
for(var j=0; j < temp_obj.length; j++){
this.make_reactive(temp_obj[i]);
}
}
set_object_setter_getter(obj, key, this);
}
}