03avalon - vm介绍

简介: 03avalon - vm介绍

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时,只能用它们来赋值)
目录
相关文章
|
监控 JavaScript 前端开发
05avalon - vm监控属性 ($watch)
05avalon - vm监控属性 ($watch)
85 0
|
监控
06avalon - vm计算属性 ($computed)
06avalon - vm计算属性 ($computed)
78 0
|
JavaScript
04avalon - vm内部属性($id)
04avalon - vm内部属性($id)
64 0
|
JavaScript 算法 前端开发
02avalon - avalon入门案例
02avalon - avalon入门案例
55 0
09avalon - vm是如何作用视图
09avalon - vm是如何作用视图
67 0
10avalon - vm运作原理
10avalon - vm运作原理
61 0
|
JavaScript
11avalon - 指令
11avalon - 指令
58 0
|
移动开发 前端开发 JavaScript
01avalon - avalon简介
01avalon - avalon简介
88 0
|
Oracle Java 关系型数据库
JVM详解之:HotSpot VM中的Intrinsic methods
JVM详解之:HotSpot VM中的Intrinsic methods
JVM详解之:HotSpot VM中的Intrinsic methods
|
弹性计算 PHP Docker
Contain Yourself! The VM Is Evolving
From traditional VMs to Docker containers, learn how the virtualization industry is evolving to meet constantly changing business needs.
2219 0
Contain Yourself! The VM Is Evolving