Ext 4 概述(三)之Env命名空间 & 语言增强包 & Ext.Function

Env命名空间

提供浏览器和操作系统的相关信息,还有告诉我们现代浏览器提供了什么功能。

Ext.env.Browser

该类提供了全部浏览器的元信息(名称、引擎、版本、是否 Strict 模式等等。

Ext.env.FeatureDetector

这是一个在 Ex JS 3 中没有类,完全新的功能,其功能在于检测浏览器特性如何,主要针对现代 HTML5 和 CSS3 的特性,包括移动平台在内的特性列表,有:

  • CSS 变形、动画、转换
  • Canvas、SVG、VML
  • 触控能力、方向
  • 导航 Geolocation
  • SqlDatabase
  • Websockets
  • History
  • Audio
  • Video

Ext.env.OS

提供当前主机操作系统的信息(包括移动 OS 的列表)。

语言包(Lang Package)

同样的功能在Ext中都会有,但这是一个新的包,之所以定义为一个新的包,是为了尽量不会影响到 JavaScript 的对象原型。尽管在对象原型中设置方法会比较方便,但是如果引入了其他 JavaScript 一起,很难说会不会构成冲突或者影响的说。再者,如果日后 ECMAScript 规范作出了修订,会不会与 Ext JS 所定义的构成重叠呢?所以,要解决以上顾虑,我们还是把语言方法的命名空间定义在 Ext 对象之下,避免在对象原型身上定义的成员。

实际上虽然没有分配一个“lang”的这么一个命名空间,但是还是在源码树(Source Tree)中划分了一份文件专门定义语言增强函数。前后变化如下:

  • Array → Ext.Array
  • Date → Ext.Date
  • Function → Ext.Function
  • Number → Ext.Number
  • Object → Ext.Object
  • String → Ext.String

请注意在兼容化文件中,仍会对核心对象的原型挂载方法之引用。重申一下,要真正升级到 Ext JS 4并摆脱 Ext JS 3 旧的调用方式,就必须移除兼容化文件,最后升级到新的命名空间形式。

Ext.Function

Ext JS 4 的函数原型 Function prototype 改变后,怎么调用?最主要的一点就是命名上发生变化,如 Function.createDelegate() 和 Function.createCallback() 分别重命名为 Ext.Function.bind() 和 Ext.Function();Function.defer() 变化为 Ext.Function.defer()。由于使用频率较高,我们在 Ext 对象上添加了快捷访问方式,便是 Ext.bind()、Ext.pass() 和 Ext.defer();其余的函数方法像 createSequence() 和 createInterceptor() 就取消了,但引入新方法 createBuffered() 和 createThrottled(),可以看看有什么用途。

如下是一些语法糖说明前后之变化:

// Ext 3: myFunction.createDelegate(this, [arg1, arg2]); myFunction.defer(1000, this); // Ext 4: Ext.bind(myFunction, this, [arg1, arg2]; Ext.defer(myFunction, 1000, this);

你可能感兴趣的:(JavaScript,浏览器,function,ext,语言)