日期:2014-05-16  浏览次数:20415 次

JS类的封装及实现代码

JS类的封装及实现代码


js并不是一种面向对向的语言, 没有提供对类的支持, 因此我们不能像在传统的语言里那样 用class来定义类, 但我们可以利用js的闭包封装机制来实现js类, 我们来封装一个简的Shape类.
js并不是一种面向对向的语言, 没有提供对类的支持, 因此我们不能像在传统的语言里那样 用class来定义类, 但我们可以利用js的闭包封装机制来实现js类, 我们来封装一个简的Shape类.?
复制代码代码如下:

function ShapeBase() {?
this.show = function()?
{?
alert("ShapeBase show");?
};?
this.init = function(){?
alert("ShapeBase init");?
};?
}?

这个类里定义了两个方法:show和init, 需要注意的是这里用到了this来声明, 而不是var, 因为用var是用来定义私有方法的.?
另外, 我们还可以用prototype属性来定义Shape的方法.?
复制代码代码如下:

ShapeBase.prototype.show=function()?
{?
alert("ShapeBase show");?
}?
ShapeBase.prototype.init=function()?
{?
alert("ShapeBase init");?
}?

上面这种写法看起来不太直观,我们可以将所有的方法写在一起.?
复制代码代码如下:

ShapeBase.prototype={?
show:function()?
{?
alert("ShapeBase show");?
},?
init:function() {?
alert("ShapeBase init");?
}?
};?

现在, 类是写好了, 让我们写个js来测试下, 看看结果是不是跟我们想象的一样呢??
复制代码代码如下:

function test(src){?
var s=new ShapeBase();?
s.init();?
s.show();?
}?

看到了吧, 其调用方式和C#一模一样, 而结果也如我们所料.?
到目前为止, 我们学会了如何创建js的类了