首页 »
程序设计 »
转玩javascript面向对象的编程(1)
在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类就这么搞定了。
评论列表
暂未有人评论,还不快点抢沙发!