Watch(vm, exp)

比特筑梦说
• 阅读 734

function Watch(vm, exp) {

this.vm = vm  // 数据集合
this.exp = exp // 需要监听的属性
this.value = this.get() // 初始化时触发自己的get

}
Watch.prototype = {

update() {
    // 执行Compile的方法,触发view更新
},
get() {
    Dep.target = this // Dep.target表示当前订阅者
    let value = this.vm[this.exp] // 这里会触发Observer的getter,因为数据集合已经被劫持
    Dep.target = null  // 重置
    return value
}

}
Object.defineProperty(data,key,{

get() {
    Dep.target && dep.addDep(Dep.target) // 向订阅者容器中添加当前订阅者
    return val
},
set() {
    dep.notify() // 如果发生变化,通知所有订阅者
}

})

点赞
收藏
评论区
推荐文章
Kent_Sun Kent_Sun
4年前
js判undefined | null
js判undefined|null判undefinedjavascriptvarexpundefined;if(typeof(exp)"undefined"){alert("undefined");}判nulljavascriptvarexpnull;if(exp&&typ
LinMeng LinMeng
4年前
vue的watch监听
vue的watch监听函数watch用来响应数据的变化,watch的用法大致有以下三种:1.监听某个变量watch:{name(newName,oldName){console.log(newName)//改变前的值console.log(oldName)//改变后的值
Dax Dax
3年前
Vue中计算属性和 watch的区别
通俗来讲,既能用computed实现又可以用watch监听来实现的功能,推荐用computed,重点在于computed的缓存功能computed计算属性是用来声明式的描述一个值依赖了其它的值,当所依赖的值或者变量改变时,计算属性也会跟着改变;watch监听的是已经在data中定义的变量,当该变量变化时,会触发watch中的方法;根据
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
GitHub Actions
使用GitHubActions发布版本时,获取触发的tag作为发布的版本号.方式一通过step获取tag,在需要使用的地方使用steps.get_version.outputs.VERSION,其中get_version是step的id.name:Release
Wesley13 Wesley13
3年前
mysql5.7.26
编辑my.cnf mysqld下插入skipgranttablesroot@VM_0_7_centosmysqlvim/etc/my.cnfForadviceonhowtochangesettingspleaseseehttp://
Stella981 Stella981
3年前
Pre
PAT甲级1119,我先在CSDN上面发布的这篇文章:https://blog.csdn.net/weixin\_44385565/article/details/89737224(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fblog.csdn.net%2Fweixin_443855
Stella981 Stella981
3年前
Linux int $0x80
exp1:sys\_exit().section.data.section.text.globl\_start\_start:       movl   $1,%eax    \_sys\_call       movl   $0,%ebx    \_return0       int    
Stella981 Stella981
3年前
Docker吐血总结
安装啥的我就不说了自己百度就行,本人是mac一路傻瓜安装。docker与vm相比的优势:1启动快,秒级别vm为分钟级2需要资源少,是轻量级的,docker容器直接与内核进行交互vm则是通过Hypervisor(VMM)与内核进行交互docker是MB级别vm为GB级别3能创建上千个容器,vm只能创建几十个4高可用性
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
4个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(