`

EXT 源码学习与研究(一)

阅读更多
EXT 源码学习与研究(一)

1.
适配器

EXT 原来是Yahoo YUI JS的一个扩展, 依赖YUI的底层代码来处理跨浏览器问题. 目前,用户可选择第三方实现或EXT来适配. 当然, 用EXT是最佳选择.

2.
核心

核心是构建于适配之上的底层代码.

3.
作用域

var o1 =
{
    fVar : 15,
    fMethod : function(){
        alert('o1 ' + this.fVar);
    }
}

var o2 =
{
    fVar : 16,
    fMethod : function(){
        alert('o2 ' + this.fVar);
    }
}

// 在o2的作用域内执行,this=o1
o1.fMethod();  // o1 15

// 在o2的作用域内执行,this=o2
o1.fMethod.apply(o2);  // o1 16


这说明函数定义在哪并不重要.它可以随时切换调用者.因此, 在一个函数内使用this是要相当小心的. 它可以是o1也可以是o2,这要看你怎么调了.

函数中this通常是函数的调用者,而对象块this是对象自己.
注意: JS是没有类,只有对象和函数.

4.
delete

它只能删除对象的属性.
有些对象的属性是不能删除的,比如 window.undefined;原型链属性.
有些则是可以删除的,比如Ext.version.
注意: 删除的属性若没有定义,也会成功返回TRUE.
因此,对于undefined类型,有三种运算符是支持的.
a: typeof a
b: delete a
c: a = 1

5.
prototype & constructor

alert(Object.prototype == {}); // [object Object]       false
alert(Object.constructor); // function Function(){ native code }
alert(Function.prototype == (function(){})); // function prototype(){ native code }  false
alert(Function.constructor); // function Function(){ native code }
alert(String.prototype == ''); // ''  true
alert(String.constructor); // function Function(){ native code }
alert(Boolean.prototype == false);  // false  true
alert(Boolean.constructor); // function Function(){ native code }
alert(Number.prototype == 0); // 0  true
alert(Number.constructor); // function Function(){ native code }
alert(Ext.prototype == undefined); // undefined  true
alert(Ext.constructor); // function Object(){ native code }
alert(Date.prototype == new Date(0)); // [19700101] true
alert(Date.constructor); // function Function(){ native code }


每种类型的原型都是不同的,构造函数也是不同的.自定义对象若原型为undefined,则它的构造函数默认是 Object.prototype.constructor.
Object.prototype 就是真正的基对象.它似乎没有任何属性,但它不是{},也不是Global对象.
Function.prototype 是一个prototype 函数,它不返回任何值.
Function.constructor 也是一个函数, 它实际上就是Function对象本身.所有构造函数默认是Function.
不只这样,函数原型的构造器也是Function.

6.
Ext.apply(obj, config, defaults);

此方法将config,defaults的属性全部复制到obj对象中. config覆盖defaults的同名属性.

7.
Ext.extend(subObject, supObject, overides);
Ext.extend(supObject, overides);

继承.通过原型链来操作父类原型上的属性,同时可以覆盖父类原型上的属性.
将子类的原型指向父类的原型.
参考:
http://wangyu.iteye.com/blog/210849

8.
Ext.override(overrideObj, overrides)

覆盖或重写
将对象原型上的方法进行重写.

9.
Ext.namespace(...)

创建多个命名空间,命名空间用来限制变量的作用域.
此方法只返回最后的字符串创建的命名空间.

var o = Ext.namespace('TangLiang', 'TangLiang.NS');

alert(o == TangLiang);
alert(o ==  TangLiang.NS);


上面的代码相当于:
TangLiang = {};
TangLiang.NS = {};

10.
核心语法

定义匿名函数并执行
(function(){

})();

// 为什么要这样写,而不是直接写到顶层? 可能是与作用域有关系.

11. 类型转换
// 字符串转换成布尔型
isElement : function(v) {
            return v ? !!v.tagName : false; // '' false ; 'abc' true
        }

// 字符串转换成数组
"abc".match(/./g); //[a,b,c]

// 字符串转换成数字
parseInt('077'); // 77

// 数字转换成字符串
toString(77); // '77'

// 字符串转换成日期
new Date(YYYY/MM/DD); 

// 取当前时间
new Date();

// 取1970/01/01
new Date(0);




12.
createInterceptor
函数注入(BEFORE)

func.createInterceptor(funcInterceptor, this);
funcInterceptor();

// before of func exec funcInterceptor,
// if return [boolean true] exec func.

13.

useShims
遮罩

14.
核心语法
var o = {
    "fName" : function(){
        alert(this["fName"]);
    }
}
o.fName();


15.
=
var a, b, c;

// 等价于 c = (false || 0) = 0; b = (c = false || 0) = 0; a = (b = c = false || 0) = 0
a = b = c = false || 0; 
 
// 等价于 alert(c);
alert(a, b, c);  


16.
// 获取函数形参数量,实参数量
var add = function(a, b)
{
    alert(arguments.callee.length);  // 2
    alert(arguments.length);  // 1
    return a ? (b ? a + b : a) : 0;
}

alert(add(1));










分享到:
评论

相关推荐

    ext JS 源码和学习资料

    总之,这个压缩包是EXT JS学习者的宝库,不仅有源码供研究,还有丰富的中文文档和教程,无论你是初学者还是经验丰富的开发者,都能从中获益匪浅。通过深入学习EXT JS,你可以创建出更加丰富、动态的Web应用,提升你...

    ext 3.0源码+帮助文档chm

    通过研究源码,不仅可以了解EXT JS的内部工作机制,还能学习到优秀的编程技巧和设计模式。而CHM文档则是实践中不可或缺的指南,帮助开发者在遇到问题时找到答案。因此,对于EXT JS的学习者来说,这个资源集合是不可...

    ext 源码api 开发文档

    EXT源码API开发文档是一份宝贵的资源,适合开发者深入理解EXT的工作原理,优化性能,或者自定义组件。 1. **源码分析**:EXT源码提供了深入学习EXT框架的机会。通过阅读源码,开发者可以了解EXT内部的工作机制,...

    Ext江湖源码

    【标签】"Ext 源码 大漠孤烟"进一步确认了主题,强调了这是关于Ext框架的源代码,且与"大漠孤烟"有关。标签是用来分类和检索的关键字,这里提醒我们关注的重点在于理解和学习Ext的源码,以及可能的作者或贡献者。 ...

    ext 3.2源码

    此外,通过源码学习,开发者能够更好地了解EXT的扩展机制,从而创建自定义组件和插件,满足特定项目需求。 总结来说,EXT 3.2的源码是一本生动的教科书,涵盖了前端开发的多个方面。通过深入研究,开发者可以提升...

    深入浅出ext js源码

    《深入浅出EXT JS源码》是一本专为EXT JS开发者设计的图书,旨在帮助读者理解EXT JS框架的内部工作原理,提升开发技能。EXT JS是一个强大的JavaScript库,用于构建富客户端应用程序,它提供了丰富的组件库,如表格、...

    Ext项目小框架介绍源码

    Ext是一个基于JavaScript的开源...在学习这个小框架的过程中,你不仅能够掌握Ext JS的基础用法,还可以了解如何组织和构建一个完整的前端项目。通过阅读和理解源码,将有助于提升你对前端开发和Ext JS框架的深入理解。

    Ext.Net界面源码C# ASPX

    通过学习和研究这个源码,开发者不仅可以了解Ext.NET与C# ASPX的整合方式,还能掌握实际项目中的一些最佳实践和常见应用场景,提升Web开发技能。如果你正在寻找一个快速构建现代Web界面的方法,这个源码资源将是一个...

    ext 中文源代码

    这个“EXT 中文源代码”是EXT框架的部分源码,带有中文注释,使得国内开发者更容易理解和学习EXT的内部工作原理。 EXT的核心特性包括组件化开发、数据绑定、丰富的用户界面组件以及强大的图表功能。它提供了大量的...

    EXT4 源码+window下模拟ext2+linux_ext文件系统模拟

    通过对这些源码的深入研究,可以了解EXT4如何管理磁盘空间、跟踪文件信息以及执行挂载、卸载、读写等操作。 1. 超级块:EXT4的超级块存储了文件系统的全局信息,如文件系统的类型、版本号、总块数、已使用的块数等...

    ext2内核源码

    研究EXT2的源码能够帮助我们深入理解文件系统的底层工作原理,这对于Linux系统开发者、存储工程师以及性能优化人员来说尤为重要。通过阅读源码,可以了解如何高效地分配和管理磁盘空间,如何保证数据一致性,以及...

    eWOW64Ext 模块源码.zip_易语言 源码

    eWOW64Ext源码库正是为解决这一问题而设计的,它是一个基于易语言的模块,提供了加载任意32/64位模块、动态调用函数以及64位进程读写的强大功能。本文将深入探讨eWOW64Ext的核心特性、工作原理及其在64位环境中的...

    Ext.Net2.1源码实例

    通过深入研究这些源码实例,开发者可以更好地理解Ext.NET的工作原理,提高自己的Web开发技能,并且能根据实际需求进行二次开发和定制。同时,这也是一个了解和学习客户端Web开发的好机会,尤其是对于熟悉.NET平台的...

    ext2.0的源码和一些example

    5. **源码学习的价值** 深入研究EXT 2.0的源码能帮助开发者了解组件的工作原理,优化性能,解决疑难问题,甚至自定义组件或扩展功能。例如,通过源码我们可以看到EXT如何处理DOM操作、事件绑定和数据渲染。 6. **...

    ext图片批量上传源码

    源码的学习可以帮助深入理解EXT组件的构建方式以及如何与其他EXT组件集成,对于提升EXT应用的开发技能非常有帮助。 总之,"ext图片批量上传源码"是一个利用EXT框架和EXT.ux.UploadDialog插件实现的Web应用功能,...

    ext3.0 源码

    【描述】中的“附有很多的例子,example”表明这个压缩包不仅包含了ext3.0的源代码,还提供了一系列示例程序,这些示例通常用于展示如何与文件系统进行交互,或者演示如何利用源代码进行开发和调试。这对于学习和...

    Ext 3.0源码+典型实例

    本资源包含 Ext 3.0 的源码、典型实例以及中文 API 文档,对于学习和开发基于 Ext 3.0 的应用非常有帮助。 1. **Ext 3.0 源码**:源码是理解框架工作原理的关键。通过阅读和研究源码,开发者可以深入理解组件的构造...

    ext医院管理源码+java源码整理

    标题中的“ext医院管理源码+java源码整理”表明这是一个关于医院管理系统的软件开发项目,使用了Java编程语言,并且包含EXT库的使用。EXT是一个JavaScript库,常用于构建富客户端的Web应用,它提供了丰富的UI组件和...

    Ext.Net源码

    Ext.Net源码是一个开源项目,专注于为.NET开发者提供与ExtJS库对应的服务器端控件集。这个项目的主要目的是简化在ASP.NET环境中使用JavaScript库ExtJS的过程,通过提供强大的服务器端支持,使得开发者能够利用C#或VB...

    Ext3.2源码、API、及Demo(grid例子)

    EXT3.2是一款广泛应用于Web开发的前端框架,主要用于构建富客户端应用。它以其强大的组件化功能、丰富的UI控件和...这个压缩包提供了一条学习EXT3.2的捷径,无论你是初学者还是有经验的开发者,都值得仔细研究和利用。

Global site tag (gtag.js) - Google Analytics