javascript观察者模式实现自动刷新效果
发布时间 - 2026-01-11 03:06:59 点击率:次本文实例为大家分享了js观察者模式实现自动刷新的具体代码,供大家参考,具体内容如下
// author wangbinandi@gmail.com
const observable = obj => {
const observers = Symbol();
const set = function(target, key, value) {
const result = Reflect.set(target, key, value);
//console.log("set key:" + key);
if ( target[observers].has(key) ) {
target[observers].get(key).forEach(observer => observer());
}
return result;
}
const get = function(target, key) {
const result = Reflect.get(target, key);
//console.log("get key:" + key);
if (arguments.callee.caller) {
if (!target[observers].has(key)) {
target[observers].set(key, new Set())
}
target[observers].get(key).add(arguments.callee.caller);
}
return result;
}
obj[observers] = new Map(); // string => Set()
return new Proxy(obj, {set, get});
};
const autorun = fn => fn();
var person = observable({
firstName: 'Matt',
lastName: 'Ruby',
age: 18,
weight: 50
});
autorun(function () {
console.log('autorun.getAge: ' + person.firstName + ' ' + person.age);
});
autorun(function () {
console.log('autorun.getName: ' + person.firstName + ' ' + person.lastName);
});
person.age = 19;
person.weight = 55;
person.firstName = 'test';
person.lastName = 'MyLast';
console.log(person.lastName);
person.age = 20;
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# js
# 观察者模式
# 自动刷新
# JavaScript观察者模式原理与用法实例详解
# 原生javascript实现类似vue的数据绑定功能示例【观察者模式】
# PHP观察者模式实例分析【对比JS观察者模式】
# JavaScript设计模式之观察者模式实例详解
# JavaScript设计模式之观察者模式(发布订阅模式)原理与实现方法示例
# JS设计模式之观察者模式实现实时改变页面中金额数的方法
# JavaScript原生实现观察者模式的示例
# JavaScript编程设计模式之观察者模式(Observer Pattern)实例详解
# JavaScript观察者模式(publish/subscribe)原理与实现方法
# 深入理解Javascript中的观察者模式
# Javascript设计模式之观察者模式(推荐)
# 学习JavaScript设计模式之观察者模式
# JavaScript观察者模式(经典)
# 怎样用JavaScript实现观察者模式
# 大家分享
# 具体内容
# 大家多多
# function
# target
# key
# observers
# Symbol
# set
# log
# forEach
# observer
# result
# Reflect
# console
# gt
# pre
# class
# brush
# arguments
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】
移动端脚本框架Hammer.js
大连网站制作公司哪家好一点,大连买房网站哪个好?
如何确保西部建站助手FTP传输的安全性?
Laravel项目怎么部署到Linux_Laravel Nginx配置详解
高性能网站服务器配置指南:安全稳定与高效建站核心方案
Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】
Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程
英语简历制作免费网站推荐,如何将简历翻译成英文?
ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集
如何快速使用云服务器搭建个人网站?
Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】
Laravel中间件如何使用_Laravel自定义中间件实现权限控制
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
js实现点击每个li节点,都弹出其文本值及修改
Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】
Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】
如何在万网开始建站?分步指南解析
Laravel如何自定义分页视图?(Pagination示例)
如何在万网利用已有域名快速建站?
Laravel如何实现数据库事务?(DB Facade示例)
如何在腾讯云服务器上快速搭建个人网站?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
C++时间戳转换成日期时间的步骤和示例代码
如何实现javascript表单验证_正则表达式有哪些实用技巧
佛山企业网站制作公司有哪些,沟通100网上服务官网?
Laravel怎么实现验证码(Captcha)功能
如何在Windows 2008云服务器安全搭建网站?
如何在阿里云ECS服务器部署织梦CMS网站?
夸克浏览器网页跳转延迟怎么办 夸克浏览器跳转优化
如何快速搭建虚拟主机网站?新手必看指南
Laravel怎么实现模型属性的自动加密
如何快速启动建站代理加盟业务?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
如何选择可靠的免备案建站服务器?
如何快速搭建高效简练网站?
用v-html解决Vue.js渲染中html标签不被解析的问题
如何续费美橙建站之星域名及服务?
Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】
Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】
jquery插件bootstrapValidator表单验证详解
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】
Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
Python正则表达式进阶教程_复杂匹配与分组替换解析

