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

Ext核心代码分析之Function.createDelegate

阅读更多
前一段一直在用Ext,可是在扩展的时候总是遇到问题,索性看Ext的源码,但是发现有很多createDelegate这个方法、一直不解,最近经高人点播,了解一二。
所属类:Function
createDelegate( [Object obj], [Array args], [Boolean/Number appendArgs] ) :这个函数的目的是创建委托。
功能:什么都不多说了。看例子
Ext.onReady(function(){
Ext.QuickTips.init()
var myclass=new Object();
//myclass并没有alert方法,我们也不打算为它写一个alert方法
//我们希望它和window.alert有一样的行为,所以我们委托window来做
myclass.alert=window.alert.createDelegate(window);
//我们还希望他有个更漂亮的show方法和Ext.MessageBox的show功能一样
//所以我们又得委托给Ext.MessageBox来做这事了
myclass.show=Ext.MessageBox.show.createDelegate(Ext.MessageBox);
//我们的myclass也有alert和show方法了
myclass.alert('alert1');
myclass.show({title:'title',msg:'message'});
});

原来就这么简单。
分享到:
评论
4 楼 flare 2008-02-17  
myclass.alert=window.alert.createDelegate(window); 
要在firefox下面执行。
在ie下这样就可以myclass.alert = alert;
3 楼 chenjf2k 2008-01-29  
magicyang918 写道
我在单纯的HTML上用这个方法会报错啊,

代码如下:
<script>
var myclass=new Object();
myclass.alert=window.alert.createDelegate(window);
myclass.alert("aaa");
</script>

错误如下:window.alert.createDelegate is not a function

估计是没有加载Ext-all.js吧?
2 楼 magicyang918 2008-01-29  
我在单纯的HTML上用这个方法会报错啊,

代码如下:
<script>
var myclass=new Object();
myclass.alert=window.alert.createDelegate(window);
myclass.alert("aaa");
</script>

错误如下:window.alert.createDelegate is not a function
1 楼 南宫小骏 2007-12-11  
createDelegate更大的用处是在于指定Function执行的作用域
简单的说就是指定Function中this所指代的对象

相关推荐

    Ext深入浅出 数据传输

    Ext深入浅出 数据传输 第10 章 数据存储与传输.....................................230 10.1 Ext.data简介............................................230 10.2 Ext.data.Connection....................230 ...

    EXT核心API详解(第一部分)

    6. **EXT核心API详解(二)-Array Date Function Number String.txt**:这部分内容与上述部分相辅相成,可能包含更深入的EXT对这些基本数据类型的增强,提供更多的实用方法和功能。 通过理解并熟练运用这些EXT核心API...

    EXT核心API详解.doc

    6. **Function类**:对函数进行了一些封装,如`createDelegate`允许创建委托函数,`createInterceptor`则可以创建拦截器函数。 7. **Ext.Element类**:这是EXT中的核心DOM操作类,提供了丰富的DOM操作方法,如`get`...

    EXT扩展Htmleditor,在工具栏中添加插入图片按钮,可选择图片插入到编辑器中(也可添加其他功能按钮)

    EXT Htmleditor的强大之处在于它的高度可定制性,你可以根据需要添加任意数量的按钮,甚至创建复杂的自定义功能。 此外,EXT Htmleditor还支持其他高级特性,如监听编辑器中的事件、自定义HTML过滤规则、使用外部...

    简析 createDelegate

    这篇博客文章可能详细分析了`createDelegate`的用途、工作原理以及在实际开发中的应用。 首先,我们要理解什么是委托和上下文。在面向对象编程中,委托是一种类型,它可以引用方法,类似于函数指针。上下文通常指的...

    Reflex-function-demo.zip_DEMO

    通过分析和运行这段代码,开发者可以更深入地理解反射的工作原理及其在实际项目中的应用。反射在诸如插件系统、序列化、元编程、动态代理等领域都有广泛的应用。然而,需要注意的是,虽然反射提供了极大的灵活性,但...

    js解决sharepoint权限问题

    clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed)); } ``` 在 onQuerySucceeded 方法中,我们可以获取当前用户所属的...

    Extjs_前后台数据交互[归类].pdf

    在这个例子中,`Ext.Ajax.request`是ExtJS用于发送Ajax请求的核心方法。`url`属性指定了后台处理的地址,`params`对象包含了要传递给后台的参数。`success`和`failure`回调函数分别处理后台操作成功或失败时的响应。...

    ExtJS 事件笔记

    事件机制是ExtJS中的核心组成部分,它使得用户界面元素能够响应用户的交互行为。本篇笔记将深入探讨ExtJS的事件处理,包括事件登记、事件对象、this的作用域以及ExtJS特有的事件管理方式。 1. **事件登记**: - **...

    [ASP.NET AJAX]Function对象及Type类的方法介绍

    Function对象是JavaScript内置的一种核心对象,用于创建函数。你可以通过`new Function()`构造函数来创建函数,或者声明传统的函数表达式。Function对象具有一个特殊的属性`prototype`,它在JavaScript的面向对象...

    extjs数据存储与传输详解

    **Ext.data**是Extjs框架中的核心组件之一,负责处理数据的加载、存储、转换以及与后端服务器之间的通信。它提供了一系列用于管理数据的类,包括Store、Reader、Writer、Proxy等。这些类共同协作,使得开发者能够...

    SharePoint 客户端对象模型 (一) ECMA Script

    Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed) ); } function onQuerySucceeded() { SP.UI.Notify.addNotification('List ' + listName + ' ...

    C#动态调用DLL并对目标函数传递参数

    在.NET框架中,C#语言提供了强大的类型安全和编译时检查,但有时我们需要在运行时动态地加载和调用DLL中的函数,这种情况通常涉及到“反射”这一核心特性。本篇将深入探讨如何使用C#进行动态DLL调用以及如何向目标...

    C#反射网络笔记,反射

    - **元数据操作**:例如,生成文档、分析代码结构或实现自定义代码生成器。 4. **如何使用反射获取类型和创建对象** 获取类型信息通常通过`typeof()`操作符或`Type.GetType()`方法。例如: ```csharp Type ...

    C#反射总结,包括实例和讲解

    System.Reflection命名空间包含了用于反射的核心类,如Assembly、Type、MethodInfo、FieldInfo等。 2. **命名空间与装配件的关系** 命名空间(Namespace)是组织代码逻辑结构的方式,类似于Java中的包,但不需要...

    C#各种反射方法源码

    本篇文章将深入探讨C#中的反射机制,包括普通反射、接口调用以及委托调用,并通过源码分析来比较它们的性能差异。 首先,我们来理解什么是反射。反射允许程序在运行时检查自身的信息,如类、接口、属性、方法等,并...

    C#动态获取DLL类库文件中的方法并调用

    DLL是一种共享代码的机制,多个应用程序可以同时使用同一DLL中的函数或类,从而节省内存并便于代码维护。在C#中,我们通常通过`using`指令引入DLL中的命名空间和类型,但在某些情况下,如未知DLL或需要在运行时决定...

    C#Winform动态调用C++和C#的Dll

    在IT行业中,动态链接库(DLL)是一种共享代码的方式,它可以被多个应用程序同时使用,以减少内存占用并提高效率。本文将重点讲解如何在C#的Winform应用中动态调用C++和C#编写的DLL,并将DLL作为嵌入资源处理,避免...

    NET 反射的学习源代码

    反射的核心功能在于动态类型发现和实例化。在.NET环境中,每个编译后的程序集(dll或exe)都是一个Assembly对象,而Assembly对象可以被反射来获取其中的类型信息。例如,你可以通过`typeof()`或`Assembly.GetType()`...

Global site tag (gtag.js) - Google Analytics