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

Pulsar Functionsに基づくイベント処理デザイン・パターン

この記事では、一般的なリアルタイム・ストリーミング・パターンとその実装を紹介します。 最初に、Apache Pulsar Functionsを使ったコンテンツ・ベース・ルーティングの実装方法を確認します。コンテンツ・ベース・ルーティングは統合パターンの1つです。このパターンは何年も前から存在し、イベント・センターやメッセージング・フレームワークでよく使われています。基本的な考え方は、各メッセージの内容を調べ、メッセージの内容に基づいて異なる宛先にメッセージをルーティングすることです...

Mar 12, 2020 · 10 min read