LearningRecord
LearningRecord copied to clipboard
原生js实现MVVM
<span id="box">
<h1 id='text'></h1>
<input type="text" id='input' oninput="inputChange(event)" />
<button id="button" onclick="clickChange()">Click me</button>
</span>
<script>
const input = document.getElementById('input');
const text = document.getElementById('text');
const button = document.getElementById('button');
const data = {
value: ''
}
function defineProperty(obj, attr) {
let val
Object.defineProperty(obj, attr, {
set(newValue) {
console.log('set')
if (val === newValue) {
return;
}
val = newValue;
input.value = newValue;
text.innerHTML = newValue;
},
get() {
console.log('get');
return val
}
})
}
defineProperty(data, 'value')
function inputChange(event) {
data.value = event.target.value
}
function clickChange() {
data.value = 'hello'
}
</script>