您当前的位置: 首页 > 

杨林伟

暂无认证

  • 3浏览

    0关注

    3337博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

03avalon - vm介绍

杨林伟 发布时间:2019-04-15 18:56:32 ,浏览量:3

avalon的所有操作都是围绕vm进行。 vm,亦即view model,视图模型。 只要我将一个JS对象添加一个$id属性, 再放到avalon.define方法里面,就能得到一个vm。

例如:

 var vm = avalon.define({
    $id: "start",
    name: "test"
})

vm是一种利用Proxy或 Object.defineProperties或VBScript创建的特殊对象。

里面以$ 带头的属性 或放到 $ skipArray,都转换为访问器属性,也就是其他语言的setter, getter。因此如果这个属性最初没有定义,那么它就不会转换为访问器属性,修改该属性,就不会刷新视图。

avalon定义了的vm,都可以在avalon.vmodels中查看到。我们可以在chrome控制台下看一下刚才的start vm的构造。

在这里插入图片描述

平时而言,vm是一种比较重型的对象。从占用内存角度来划分,浏览器中的四种对象排行如下:

  1. 超轻量 Object.create(null)
  2. 轻量 一般的对象 {}
  3. 重量 带有访问器属性的对象, avalon VM对象
  4. 超重量 各种节点或window对象
  5. 我们构建VM时只允许存在普通对象(不能是某个函数的实例),函数,数组,数字,字符串,布尔,其他一切不支持(undefined与null不能出现在定义VM时,只能用它们来赋值)
关注
打赏
1662376985
查看更多评论
立即登录/注册

微信扫码登录

0.1285s