`
forlab
  • 浏览: 133474 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

学习Ext.apply实现对象的无限继承

 
阅读更多

借鉴Ext.apply实现对象的无限继承
url: http://ajaxbbs.net/blog/post/175/#entrymore

Ext-base.js开头有这样一个方法apply。
代码如下:

Ext.apply=function (C,D,B){
 if(B){
  Ext.apply(C,B);
 }if(C&&D&&typeof D=="object"){
  for(var A in D){
   C[A]=D[A];
  }
 }
 return C;
};

该段代码的作用是实现对象的继承。
参数意义:
如果只传入两个参数,则将C继承D的所有方法属性,如果定义了B则每次都先继承B的方法属性然后再继承D的方法属性,即B是默认继承对象。

代码内容不难理解,之后自己思虑写一个可以继承无限对象的方法,及可以传入n个对象,然后将所有对象的方法属性继承给第一个参数对象并返回该对象。花了几分钟时间写出了一个(代码没有做优化)。
代码如下:

<script type="text/javascript">
<!--
 function apply(){
  var l=arguments.length;
  if(l<1) {
   return null;  //无参数
  }
  if(l>2){  //多于两个
   apply(arguments[0],arguments[l-1]);  //从最后一个开始继承
   arguments.length=l-1;  //去掉最后一个参数然后递归
   apply(arguments);
  }
  //两个参数
  if(arguments[0]&&arguments[1]&&typeof arguments[1]=="object"){
   for(var a in arguments[1]){
    arguments[0][a]=arguments[1][a];
   }
  }
  return arguments[0];
 };

 var a=new Object();
 a.a="xxx";
 a.e="yyy";
 a.f="zzz";

 var b={xx:"aaaa",yy:"dsdfa",tt:"ddddd"};
 var d={s1:"tesas",s2:"545465"};
 var c=new Object();
 var obj=apply(a,b,c,d);

 var arr = new Array();
 for(var i in obj){
  arr.push(i + ":" + obj[i] + "\n");
 }
 alert(arr.join(&apos;&apos;));
//-->
</script>

分享到:
评论

相关推荐

    ext js 4.1apply && override

    ### Ext JS 4.1中的`Ext.apply`与`Ext.override` #### 一、Ext.apply详解 `Ext.apply`是Ext JS框架中的一个核心方法,主要用于对象的属性合并。此方法能够将一个或多个对象的属性复制到目标对象中,从而实现对象...

    Ext.Ajax.request2.x实现同步请求

    本文将详细解析如何利用`Ext.Ajax.request`实现同步请求,并探讨其背后的原理和注意事项。 首先,我们需要理解Ajax的本质,它是Asynchronous JavaScript and XML的缩写,虽然现在XML已不再是主要的数据交换格式,但...

    Ext.get与Ext.fly的区别

    在这个例子中,`Ext.get`和`Ext.fly`都实现了对元素的隐藏或显示操作。然而,`Ext.fly`并不会将`bar`元素的对象持久化在内存中,而`Ext.get`则会缓存`foo`元素的对象,以便于后续的操作。 综上所述,`Ext.get`和`...

    extjs-Ext.ux.form.LovCombo下拉框

    这些文件可以帮助开发者理解并应用`Ext.ux.form.LovCombo`,通过查看源码学习如何初始化、配置以及处理相关事件。 综上所述,`Ext.ux.form.LovCombo`是EXTJS中用于创建具有多选功能和良好浏览器兼容性的下拉框组件...

    Ext.get与Ext.fly 的区别

    在阅读《Ext_Core手册.pdf》时,可以深入研究EXTJS的核心概念和API,了解更多关于`Ext.get`和`Ext.fly`的底层实现以及它们在不同场景下的应用策略。同时,理解EXTJS中的`Element`类和DOM操作对于提升EXTJS应用的性能...

    Ext.data.Store的基本用法

    从`Ext.data.Store`中获取数据可以通过多种方式实现。最常见的方法是使用`getAt`方法结合`get`方法来获取特定记录中的数据。 ```javascript // 获取第0条记录的name值 var name = store.getAt(0).get('name'); // ...

    EXT.form组件

    9. `numberfield`:`Ext.form.NumberField`继承自`Ext.form.TextField`,专用于处理数字输入。它提供了额外的配置项,如允许小数、负数,设定最大最小值和精度,以及自定义小数分隔符。 10. `radio`:`Ext.form....

    Ext.Ajax.request跨域

    标题"Ext.Ajax.request跨域"指出我们将探讨如何使用ExtJS库中的Ajax模块进行跨域请求。Ext.Ajax.request是ExtJS提供的一种发起Ajax请求的方式,它允许开发者向服务器发送异步HTTP请求。然而,由于浏览器的同源策略...

    org.restlet.ext.spring.jar

    org.restlet.ext.spring.jar

    一个简单的Ext.Window中插入图片的例子

    结合以上代码,你可以实现一个简单的`Ext.Window`并展示图片。在实际应用中,你可能还需要考虑其他因素,如图片加载失败的处理、响应式布局等。 此外,提供的`一个简单的Ext.Window中插入图片.doc`文件可能包含更...

    Ext.Store的获取方法

    在Ext.js中,`Ext.Store`是用来管理数据的类,它通常与各种UI组件(如Grid、ComboBox等)关联,用于存储和检索数据。然而,获取`Ext.Store`的方式并不像获取其他Ext组件那样直接,因为Store并不是一个具有可视界面的...

    Ext.js 6 示例学习

    本压缩包包含两个PDF文档,分别是“Ext.JS6ByExample.pdf”和“Ext.JS6学习文档.pdf”,都是针对Ext.js 6版本的学习资料,对于想要深入理解并掌握Ext.js 6的开发者来说是宝贵的资源。 "Ext.JS6ByExample.pdf"很可能...

    Ext.ux.SwfUploadPanel.js

    `Ext.ux.SwfUploadPanel.js`是这样一个基于ExtJS和SwfUpload技术的插件,它实现了多文件上传的功能。这篇文章将深入探讨这个插件的工作原理、主要特点以及如何在实际项目中应用。 首先,`ExtJS`(全称为EXT ...

    Ext.js教程和Ext.js API

    Ext.js 是一个强大的JavaScript库,专门用于构建富客户端的Web应用程序。它提供了丰富的用户界面组件和数据绑定功能,使得开发者可以构建出具有桌面应用级别的交互式网页应用。本教程和API文档聚焦于Ext.js 3.0版本...

    Ext3.2的Ext.data.Store类和Ext.Ajax类的实际运用

    其中,我们可以看到Ext.Ajax可以实现动态与静态的方式提交到web服务器。从中可以看出,其实Ext框架可以非常方便的与现有网站集成。关于Ext.data.Store类,我们可以看出:该框架提供了客户端缓存的功能--这对于我们...

    EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档

    EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档EXT.JS_文档...

    vbe6ext.olb

    运行Microsoft office时,vbe6ext.olb不能加载

    EXT dojochina文本框示例Ext.form.TextField.rar

    8. **组合框模式**:`Ext.form.TextField`还可以扩展为`Ext.form.ComboBox`,实现下拉选择功能,这在需要用户从预定义选项中选择时非常有用。 在压缩包中的`Ext.form.TextField`文件夹,很可能是包含了一个或者多个...

    Ext.window从右下角弹出/隐藏

    ### Ext.window从右下角弹出/隐藏:深入解析与实现 #### 一、概述 在Web应用开发中,为了提升用户体验,开发者经常会利用各种UI框架来实现丰富的交互效果。ExtJS作为一款成熟且功能强大的JavaScript框架,在这方面...

Global site tag (gtag.js) - Google Analytics