var data = {
name: "fangtangxiansheng",
job: "fe",
power: 0
};
console.log(data);
let target = null;
class willObserver {
watchList = [];
// 增加观察者
addWatch() {
target && (this.watchList =[... new Set([...this.watchList, target])]);
}
watchUpdate() {
this.watchList.forEach((watch) => {
watch.update();
});
}
// 通知
notiy() {
this.watchUpdate();
}
}
class Watch {
constructor(cb) {
this.cb = cb;
target = this;
}
update() {
this.cb();
}
}
const creatWatch = (expCondition, cb) => {
new Watch(cb);
expCondition();
};
// 构造 ”数据依赖埋点“
const trasnfromDataToAutoListion = (data) => {
Object.keys(data).forEach((key) => {
let cache = data[key];
let _ob = new willObserver();
Object.defineProperty(data, key, {
// 做一下埋点
set(v) {
cache = v;
_ob.notiy();
},
// 触发watch 实例更新
get() {
_ob.addWatch();
return cache;
}
});
});
};
trasnfromDataToAutoListion(data);
creatWatch(
() => {
console.log("condition", data.name, data.job);
},
() => {
document.querySelector("#html").innerHTML = JSON.stringify(data);
}
);
document.querySelector("#html").innerHTML = JSON.stringify(data);
setInterval(() => {
data.power = `${Math.random() * 100}%`;
}, 500);
经过我多方查询与观察,我的web serve之所以 出现这样的问题 是因为.net framewo...
无论是谁,在制作页面的过程都是会碰到这样或者那样的问题,出了问题就肯定要解...
随着各大手机厂商陆续推出 5G 手机,智能手机全面迎来 5G 浪潮。可能有人会发问...
简介: Flutter 有很多优点,特别是对于开发者来说,跨平台多端支持,丰富的 UI ...
最近在写一个类似截图里的简易画图的小工具,画线,画矩形,画圆,可以选择颜色...
今天这篇过来人的宝贵经验,作者有过7年的技术管理经验,最多时带了80+人,现就...
取消 ul li 前面的图标 1 清空Value值 1 设置Value值 1 清空标签中间值 1 设置标...
通过css3实现炫酷的雷达扫描图: 直接上代码: // index.html!DOCTYPE htmlhtmlh...
效果: 代码: !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"...
【内容】: 1.利用background-image 渐变样式 2.可以利用scale缩放 3.给伪元素设...