首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

ExtJs源码分析与学习—ExtJs核心代码(1)

2012-10-24 
ExtJs源码分析与学习—ExtJs核心代码(一)首先声明一下,以下部分内容摘自网上?一、?有了上一篇ExtJs源码结构

ExtJs源码分析与学习—ExtJs核心代码(一)

首先声明一下,以下部分内容摘自网上

?

一、?有了上一篇ExtJs源码结构和ExtJs自带的调试工具后,下面介绍一下ExtJs最核心的部分ext-core
二、?首先看Ext.js文件

?

ExtJs核心代码之一,主要实现对象的继承
该方法有两种执行
其一,只传o,c时直接将c上的所有属性/方法拷贝给o后返回;
其二,defaults也传时,会将defaults,c上的所有属性/方法都拷贝给o ,传三个参数时,首先拷贝defaults,然后再拷贝c,这个方法的实现蛮有意思的。
有了该方法后,ExtJs中对象之间的继承就变得容易多了,只要调用该方法,就可以把A对象上的所有方法复制到B对象上。

?

/**         * Adds a list of functions to the prototype of an existing class, overwriting any existing methods with the same name.         * Usage:<pre><code>Ext.override(MyClass, {    newMethod1: function(){        // etc.    },    newMethod2: function(foo){        // etc.    }});</code></pre>         * @param {Object} origclass The class to override         * @param {Object} overrides The list of functions to add to origClass.  This should be specified as an object literal         * containing one or more methods.         * 将对象overrides的所有属性/方法拷贝到类origclass的原型上。         * 需要注意的是后面的if判断,IE中for in不能遍历对象的Object的toSting等方法,         * 因此需要特别处理一下。IE9 beta重写对象的内置方法如toString后是可用for in遍历的         * @method override         */        override : function(origclass, overrides){            if(overrides){                var p = origclass.prototype;                Ext.apply(p, overrides);                if(Ext.isIE && overrides.hasOwnProperty('toString')){                    p.toString = overrides.toString;                }            }        },

?

该方法实现了将对象overrides的所有属性/方法拷贝到类origclass的原型上。需要注意,IE中for in不能遍历对象的Object的toSting等方法,因此需要特别处理一下。在IE9 beta重写对象的内置方法如toString后是可用for in遍历的,见?for in的缺陷?。

?

Ext.extend是js继承最经典的实现方式了,参考我之前写的?ExtJs中继承的实现与理解—extend

热点排行
Bad Request.