一、深拷贝
一个简单的实现
let newObj = JSON.parse(JSON.stringify(obj))
二、Object.defineProperty
三、发布者/订阅者模式
四、双向绑定
一个简单的实现
<div id="txt"></div>
<script>
let obj = {
a: '123'
}
function observe(data) {
for (let i in data) {
Object.defineProperty(data, i, {
enumerable: true,
configurable: false,
get: function () {
return val
},
set: function (newVal) {
console.log('changing...')
document.getElementById('txt').innerText = newVal
val = newVal
}
})
}
}
window.onload = function () {
observe(obj)
obj.a = '456'
}
</script>
网友评论