blog

vue双方向データバインディング実装原則

ES5:...

Mar 12, 2020 · 1 min. read
シェア

ES5: Object.defineProperty

//html
 :<span id="spanName"></span>
<br>
<input type="text" id="inpName">
//JS 2.0
let obj = {
 name: ''
};
let newObj = JSON.parse(JSON.stringify(obj));
Object.defineProperty('obj', 'name', {
 get() {
 return newObj.name;
 },
 set(val) {
 if(val === newObj.name) return;
 newObj.name = val;
 objServer();
 }
});
//==== 2.0  
//3.0
let obj = {};
obj = new Proxy(obj, {
 get(target, prop) {
 return target[prop];
 },
 set(target, prop, value) {
 target[prop] = value;
 objServer();
 }
})
//==== 3.0  
function objServer() {
 spanName.innerHtml = newObj.name;
 inpName.value = newObj.name;
}
setTimeout(() => {
 obj.name = 'ホットだ;
}, 1000);
inpName.oninput = function() {
 obj.name = this.value;
}
//2.0 
1.生データのクローン化
2.オブジェクトの各プロパティのリスナーを個別に設定する必要がある。



Read next

htmlで登録ページを書く

テーブルタグ、リストタグ、フォームタグを主に使用して、非常に単純な登録ページを完成させました。効果は図のとおりです:

Mar 11, 2020 · 2 min read