📜  Ext.js-类系统(1)

📅  最后修改于: 2023-12-03 14:41:05.397000             🧑  作者: Mango

Ext.js-类系统

Ext.js是一款功能强大的JavaScript框架,以其丰富的组件库和易于扩展的类系统而著称。本文将介绍Ext.js的类系统,详细讲解如何使用该系统创建和扩展类。

创建类

要使用Ext.js的类系统创建类,首先要理解几个关键的概念。

Ext.define()

Ext.define()是Ext.js用于创建类的方法。它接受一个对象作为参数,其中包括类的名称、继承关系、属性和方法等信息。

以下是一个简单的使用Ext.define()定义类的示例:

Ext.define('Person', {
    name: 'Unknown',
    age: 0,
    speak: function(){
        console.log('Hello, my name is ' + this.name + ' and I am ' + this.age + ' years old.');
    }
});
继承

继承是面向对象编程中的一种重要概念,它允许我们重用已有的代码。在Ext.js中,继承通过指定类的父类来实现。

下面是一个继承自Person类的Student类的示例:

Ext.define('Student', {
    extend: 'Person',
    grade: '',
    study: function(){
        console.log('I am studying in grade ' + this.grade + '.');
    }
});
构造函数

在创建类的过程中,可以定义一个名为constructor的方法作为构造函数。构造函数在类实例化时调用。

以下示例是在构造函数中设置类的属性:

Ext.define('Car', {
    brand: '',
    year: 0,
    constructor: function(brand, year){
        this.brand = brand;
        this.year = year;
    }
});
静态属性和方法

可以使用statics属性和静态方法来定义属于类本身而不是每个实例的属性和方法。

以下是一个使用静态属性和静态方法的示例:

Ext.define('MathUtil', {
    statics: {
        PI: 3.14159,
        square: function(x){
            return x*x;
        }
    }
});
扩展类

在Ext.js中,通过扩展类可以很容易地对现有类进行修改和拓展。以下是几种扩展类的方式:

覆盖方法

要覆盖父类的方法,可以直接在子类中重新定义该方法。

以下是一个覆盖Person类的speak方法的示例:

Ext.define('Child', {
    extend: 'Person',
    speak: function(){
        console.log('Hello, my name is ' + this.name + '.');
    }
});
添加方法

要添加新的方法,可以在子类中使用prototype来定义新方法。这将添加到父类的方法中。

以下是一个添加新方法到Person类的示例:

Ext.define('Teacher', {
    extend: 'Person',
    teach: function(subject){
        console.log('I am teaching ' + subject + '.');
    }
});

Teacher.prototype.grading = function(){
    console.log('I am grading papers.');
};
添加属性

要添加新属性,可以使用config对象来为子类定义新属性。这将添加到父类的属性中。

以下是一个添加新属性到Person类的示例:

Ext.define('Doctor', {
    extend: 'Person',
    config: {
        specialization: ''
    }
});
结论

Ext.js的类系统为开发人员提供了强大的面向对象编程功能。通过定义类、构造函数、继承、静态属性和方法以及类扩展等方式,可以轻松扩展和修改代码。