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)
83 0
|
监控
06avalon - vm计算属性 ($computed)
06avalon - vm计算属性 ($computed)
75 0
|
JavaScript 算法 前端开发
02avalon - avalon入门案例
02avalon - avalon入门案例
53 0
|
JavaScript
04avalon - vm内部属性($id)
04avalon - vm内部属性($id)
61 0
09avalon - vm是如何作用视图
09avalon - vm是如何作用视图
64 0
|
JavaScript
11avalon - 指令
11avalon - 指令
56 0
10avalon - vm运作原理
10avalon - vm运作原理
59 0
sun.jvm.hotspot.runtime.VMVersionMismatchException: Supported versions are 25.221-b11. Target VM
今天在查看 JVM 堆内存具体使用情况的时候,执行 jmap 命令发现如下的报错信息,报错说的是虚拟机版本不匹配,感觉很奇怪因为我刚在另外一台机器上执行了这个命令,换了一台机器就执行报错,初步判断是机器环境的问题,最后对比了两个机器的 JDK 环境,发现报错的这台机器上有两个不同版本的 JDK 所以推测跟多个版本有关系.
|
移动开发 前端开发 JavaScript
01avalon - avalon简介
01avalon - avalon简介
81 0
|
弹性计算 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.
2216 0
Contain Yourself! The VM Is Evolving