国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JS類的封裝及實現代碼

2024-05-06 14:12:36
字體:
來源:轉載
供稿:網友
1. 定義js類
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的類了, 但還只是實例方法,要是實現跟C#中的靜態方法要怎么做呢?
其實, 實現js的靜態方法很簡單, 看下面如何實現:
代碼如下:
//靜態方法
ShapeBase.StaticDraw = function()
{
alert("method draw is static");
}

2. 實現JS類抽象和繼承
同樣, js中也不支持類繼承機制,但我們可以通過將父類prototype中的成員方法復制到子類的prototype中來實現.
和類的繼承一樣,JavaScript也沒有任何機制用于支持抽象類.但利用JavaScript語言本身的性質.可以實現自己的抽象類.
首先來看看js中的虛方法, 在傳統語言中虛方法是要先定義的, 而包含虛方法的類就是抽象類,不能被實例化,而在JavaScript中,虛方法就可以看作該類中沒有定義的方法,但已經通過this指針使用了.
和傳統面向對象不同的是,這里虛方法不需經過聲明,而直接使用了, 并且類也可以被實例化.
先定義object的extend方法, 一個為靜態方法,一個為實例方法, 這兩個方法用于實現繼承的prototype復制
代碼如下:
Object.extend = function(destination, source) {
for (property in source) {
destination[property] = source[property];
}
return destination;
}
Object.prototype.extend = function(object) {
return Object.extend.apply(this, [this, object]);
}

接下來我們實現一個繼承類Rect, 這里先用一種簡單的方法來實現。
代碼如下:
function Rect() {
}
Rect.prototype = ShapeBase.prototype; //只這一句就行了
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 开阳县| 芜湖市| 曲麻莱县| 平凉市| 农安县| 奉化市| 锡林郭勒盟| 新安县| 逊克县| 安图县| 沽源县| 汝州市| 林西县| 威信县| 公主岭市| 长治市| 安乡县| 清水县| 方正县| 体育| 兖州市| 泰宁县| 师宗县| 峨眉山市| 青海省| 无为县| 巴林左旗| 宜章县| 太湖县| 耒阳市| 威信县| 临安市| 定州市| 宁陵县| 临西县| 喀喇沁旗| 邯郸县| 平遥县| 威宁| 南雄市| 县级市|