`
msf_job
  • 浏览: 1348 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

请您先登录,才能继续操作

看ext类的extend方法的两点疑问

阅读更多
        extend : function(){
            // inline overrides
            var io = function(o){
                for(var m in o){
                    this[m] = o[m];
                }
            };
            return function(sb, sp, overrides){
                if(typeof sp == 'object'){
                    overrides = sp;
                    sp = sb;
                    sb = function(){sp.apply(this, arguments);};
                }
                var F = function(){}, sbp, spp = sp.prototype;
                F.prototype = spp;
                sbp = sb.prototype = new F();
                sbp.constructor=sb;
                sb.superclass=spp;
                if(spp.constructor == Object.prototype.constructor){
                    spp.constructor=sp;
                }
                sb.override = function(o){
                    Ext.override(sb, o);
                };
                sbp.override = io;
                Ext.override(sb, overrides);
                return sb;
            };
        }()
---------------------------
1 extend : function(){}(),我想问一下为什么在ext类中extend方法后面有().
2 return function(sb, sp, overrides){}我对这种写法不太理解.
而Doc extend( Object subclass, Object superclass, [Object overrides]) 为什么这里 extend : function(){} 没有参数在return的funtion带参数这样写的作用是什么呢。
我的技术不太强,如果问的问题太弱请不要介意,有会的兄弟帮忙解答一下。

分享到:
评论
3 楼 fsword 2007-10-25  
msf_job 写道
谢谢楼上的解答,我这方面的知识还是差啊,回来补习一下.

这几个问题都需要对函数和闭包概念的理解,建议补充一下这方面的知识,这方面的书可以看《JavaScript权威指南》里面关于对象和函数两章,另外在网上搜一搜“js+闭包”,认真读一读可以有所帮助。
看了以后如果还有问题不妨接着问:-)
2 楼 msf_job 2007-10-23  
谢谢楼上的解答,我这方面的知识还是差啊,回来补习一下.
1 楼 afcn0 2007-10-23  
1.是为了使return的function可以使用closure,比如
a=function(){var eee=123; return function(){alert(eee)}}()
a()
最后的()就是执行这个函数
2.就是返回匿名函数,在scheme里面叫lambda,最后extend其实就是这个匿名函数的引用了,当然extend就有3个参数了
如果对于scope chain不太熟悉,看着确实不太好懂

相关推荐

    EXT dojochina Ext类静态方法.rar

    EXT dojochina Ext类静态方法是一个关于EXT框架在JavaScript中的使用的主题,主要聚焦于Ext类的静态方法。EXT是一个强大的前端开发框架,由Sencha公司开发,它提供了丰富的组件库,用于构建复杂的Web应用程序。在EXT...

    EXT dojochina Ext类构造方法.rar

    Ext类的构造方法通常以`Ext.extend()`开头,这是Ext JS中实现继承的关键方法。它接受两个参数:子类(派生类)和父类(基类)。通过这个方法,我们可以轻松地创建自定义组件或扩展已存在的组件,继承其属性和方法。 ...

    Ext一些方法的重写

    除了`Ext.extend()`,`Ext`库还提供了一些其他与继承和方法重写相关的工具,比如`mixins`(混入)机制,它允许一个类“借用”另一个类的属性和方法。通过`Ext.mixin`,我们可以创建可复用的代码模块,然后在多个类...

    ext 继承(extend) 理解练习

    总的来说,`ext继承`(`extend`)是JavaScript中实现继承的一种方式,它通过复制属性和方法以及调整原型链来让一个类能够继承另一个类的特性。这种技术在构建复杂应用时尤其有用,因为它促进了代码的模块化和重用。...

    Ext.Store的获取方法

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

    ExtJS的extend(Ext Designer的使用)

    总结来说,`extend`是Ext JS中构建组件和类继承结构的核心机制,而Ext Designer通过提供可视化界面,使开发者能够更加直观地理解和利用这一机制。通过`extend`,我们可以创建出符合特定需求的自定义组件,同时保持...

    EXT dojochina Ext方法重写.rar

    这通常涉及到`Ext.extend`函数的使用,通过它来定义新类并覆盖父类的方法。例如,如果你要创建一个扩展了`Ext.grid.Panel`的新面板,并重写其`initComponent`方法: ```javascript Ext.define('MyGridPanel', { ...

    原生js实现jquery $.extend方法

    原生js实现jquery $.extend方法 通过遍历对象属性来实现

    4.0Ext 类系统

    1. **旧式继承** 传统的 `Ext.extend` 方法用于创建新类,如 `var MyWindow = Ext.extend(Object, {...})`。但这种方式仅支持基本的继承,不支持更复杂的类配置。 2. **新式声明** 新的类系统引入了更全面的 API,...

    EXT dojochina Ext类继承.rar

    1. **Ext.extend()**:这是EXTJS中最基础的类继承方法。通过调用`Ext.extend(baseClass, subClass, overrides)`,可以创建一个新的子类,其中`baseClass`是父类,`subClass`是新创建的子类名称,`overrides`是一个...

    EXT dojochina Ext类实例属性.rar

    通过`extend`关键字,一个类可以从另一个类继承属性和方法;通过`mixins`,类可以集成其他类的特定功能,而无需直接继承它们。 5. **组件(Components)**:在EXT中,组件是最基本的构建块,它们具有各自的实例属性...

    Ext继承分析

    在ExtJS中,`Ext.extend()` 是一个核心的函数,用于实现类之间的继承机制。它允许你创建新的类(子类),这些类将继承另一个类(父类)的属性和方法。这个功能对于构建复杂的JavaScript应用程序至关重要,因为它提供...

    Ext继承和扩展

    然而,`Ext`库提供了一个更优雅、更易于理解和维护的方式来处理继承,这包括`Ext.extend()`方法和`Ext.create()`函数。 ### `Ext.extend()` `Ext.extend()`是`Ext`库中用于创建子类的核心方法。它接受三个参数:...

    Ext实现java的面向对象实例

    6. **类继承**:Ext支持基于类的继承,允许一个类(子类)继承另一个类(父类)的属性和方法。使用`extend`关键字来指定父类,如`Ext.extend('SubClass', 'SuperClass')`。 7. **类实例方法重写**:在子类中,可以...

    ext面向对象和继承

    在EXTJS中,类通常通过`Ext.extend()`方法来定义,它创建了一个新的类,并继承自指定的父类。例如: ```javascript Ext.extend(ChildClass, ParentClass, { // 子类的方法和属性 }); ``` 这里的`ChildClass`是新...

    ext继承重写

    总结起来,EXT JS的`extend`机制让我们能够构建一个类层次结构,有效地组织和管理代码,而方法的重写则赋予了我们定制和优化现有功能的能力。这两个特性相结合,使得EXT JS成为了一个强大且灵活的前端开发框架。通过...

    ext多选下拉列表的全选功能实现

    "ext多选下拉列表的全选功能实现"这个主题聚焦于一个特定的UI组件——ExtJS库中的MultiComboBox,这是一种允许用户多选的下拉列表控件。在实际应用中,全选功能常常被用来快速选择所有选项,极大地提高了用户的操作...

    EXT文档 不下后悔.doc

    - 类的继承在EXT中通过`Ext.extend()`实现,有两种形式,其中第二种形式允许在已有的类上扩展新的功能。 5. **类继承**: - EXT支持两种类继承方式: 1. `MyClass = Ext.extend(SuperClass, { /* */ });` 2. `...

    com.guo.android_extend:android-extend:1.0.6

    implementation(name: 'android-extend-release', ext: 'aar') } ``` 3. 最后,执行 `gradlew build` 或者在 Android Studio 中同步项目,使库被正确地引入到项目中。 总之,这个压缩包提供了一个名为 "android-...

Global site tag (gtag.js) - Google Analytics