JSFiddle - React, Tailwind, and code Playground
by ruirui
HTML
<div>
Vue 数据绑定(一)- ES5
</div>
<div>
请打开控制台查看结果
</div>
JavaScript
function Observer(data) {
this.data = data;
this.getset(data);
}
Observer.prototype.getset = function(data) {
for(var key in data) {
if(data.hasOwnProperty(key)) {
var val = data[key];
Object.defineProperty(data, key, {
configurable: true,
enumerable: true,
get: function () {
console.log('你访问了' + key);
return val;
},
set: function (newval) {
console.log('你设置了' + val + ',新的值为' + newval);
val = newval;
}
})
}
}
}
let app1 = new Observer({
name: 'youngwind',
age: 25
})
let app2 = new Observer({
university: 'bupt',
major: 'computer'
})
console.log(app1.data.name); // 你访问了name
console.log(app1.data.age = 100); // 你设置了25,新的值为100
console.log(app2.data.university); // 你访问了university
console.log(app2.data.major = 'science'); // 你设置了computer,新的值为science