首页 » 程序设计 » 转玩javascript面向对象的编程(1)

发表时间:2011-4-7 22:22:42 | 分类:程序设计 | 阅读:608

在javascript语言中没有class(类)关键字,那是否就说明了javascript不支持类的定义呢?单从关键字上说,javascript是不支持类的定义,但是我们完全可以使用面向对象的思想让javascript也实现类的定义。

javascript有两个非常重要的关键字function和prototype,在javascript中function并非是指定义一个函数那么简单,类的创建也是使用function这个关键字。

我们先看看面向对象编程的语言是如何定义一个类的,以C#为例:

/**
 * 定义CellPhone类:该类有一个Brand属性及一个Call方法
 */
class CellPhone
{
    string  _brand;
    //  属性的定义
    string Brand
    {
        get { return this._brand; }
        set { this._brand = value; }
    }
    // 方法的定义
    string Call()
    {
        return this.Brand + "品牌手机可以打电话嘀……";
    }
}

同一个类,使用javascript如何定义呢?请参见以下的javascript代码的示例:

/**
 *  定义CellPhone类(需要使用构造函数方式):该类有一个Brand属性及一个Call方法
 */
function CellPhone(_brand) {
    // 属性Brand
    this.Brand = _brand;
    // 方法Call
    this.Call = function () {
        return this.Brand + "品牌手机可以打电话嘀……";
    }
}

仔细比较一下上面C#与javascript对CellPhone类的定义,是不是感觉两者都是大同小异了?然而细心的读者也许会问:前面提到的prototype怎么就没用上呢?

好,prototype闪亮登场!使用prototype定义属性或方法称为原型方式,将以上的javascript类定义示例改为以下:

function CellPhone(_brand) {
    // 属性Brand
    CellPhone.prototype.Brand = _brand;
    // 方法Call
    CellPhone.prototype.Call = function () {
        return this.Brand + "品牌手机可以打电话嘀……";
    }
}

调用示例:

var phone1 = new CellPhone("Iphone");
alert(phone1.Call());
var phone2 = new CellPhone("Nokia");
alert(phone2.Call());

Ok,到此为止,一个简单的javascript类就这么搞定了。

评论列表


暂未有人评论,还不快点抢沙发!

发表评论


昵称:
邮件:
链接: