国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
以一個(gè)最簡(jiǎn)單的例子把OO的JavaScript說(shuō)明白

以一個(gè)最簡(jiǎn)單的例子把OO的JavaScript說(shuō)明白<http://blog.csdn.net/calvinxiu/archive/2005/05/20/377097.aspx>

OO的JavaScript并不高深,麻煩就麻煩在google出來(lái)的國(guó)人介紹文章經(jīng)常羅羅嗦嗦,而且之間的說(shuō)法還各有不同,擺在一起就讓人看了頭大。
這里重拾簡(jiǎn)單主義,以一個(gè)最簡(jiǎn)單的例子把OO Javascript說(shuō)明白。

*1.一個(gè)頗為精簡(jiǎn)的例子*

*只需理解三個(gè)關(guān)鍵字:
*第一個(gè)是*function *,JS世界里Class的定義用"function",function里面的內(nèi)容就是構(gòu)造函數(shù)的內(nèi)容。

第二個(gè)是*this*指針,代表調(diào)用這個(gè)函數(shù)的對(duì)象。

第三個(gè)是*prototype*,用它來(lái)定義成員函數(shù), 比較規(guī)范和保險(xiǎn)。

//定義Circle類,擁有成員變量r,常量PI和計(jì)算面積的成員函數(shù)area()
function Circle(radius)
{
    this.r = radius;

}

Circle.PI = 3.14159;
Circle.prototype.area = function(  ) {return Circle.PI * this.r * this.r;}

//使用Circle類
var c = new Circle(1.0);
alert(c.area());

另外成員函數(shù)定義還可以寫(xiě)成這樣:

function compute_area(){return Circle.PI * this.r * this.r;}
Circle.prototype.area=compute_area;

*2.繼承*

*注意兩點(diǎn)*
1.定義繼承關(guān)系 ChildCircle.prototype=new Circle(0); 其中0是占位用的
2.調(diào)用父類的構(gòu)造函數(shù)
     this.base=Circle;
     this.base(radius);

//定義ChildCircle子類
function ChildCircle(radius)
{
     this.base=Circle;
     this.base(radius);

}

ChildCircle.prototype=new Circle(0);
function Circle_max(a,b)
{
    if (a.r > b.r) return a;

    else return b;

}

ChildCircle.max = Circle_max;

//使用ChildCircle子類
var c = new ChildCircle(1);
var d = new ChildCircle(2);
var bigger = d.max(c,d);
alert(bigger.area());

*3.var式定義*
JS還支持一種var Circle={raidus:1.0,PI:3.1415}的形式,語(yǔ)法就如CSS的定義。
因此如果Circle只有一個(gè)實(shí)例,下面的定義方式更簡(jiǎn)潔:

var newCircle=
{
r:1.0,
PI:3.1415,
area: function(){ return this.PI * this.r * this.r;}

};

alert(newCircle.area());

BTW.吃飽了撐著可以看看Rails帶的OO Javascript庫(kù)--Prototype <http://prototype.conio.net/>
其實(shí),Javascript現(xiàn)在的語(yǔ)法真的不適合那么別扭的寫(xiě)成OO模式....

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=377097
 [點(diǎn)擊此處收藏本文 <javascript:StorePage()>]   江南白衣發(fā)表于 2005年05月20日 19:57:00

  errorter 發(fā)表于2005-05-21 14:31:00  IP: 61.186.252.*
呵 醍醐灌頂
漂亮極了

 cedarjava 發(fā)表于2005-05-23 13:53:00  IP: 61.186.252.*
我對(duì)javascript有一些了解,但是對(duì)其中的oo概念,總是有些模糊,因?yàn)樗刮蚁氲絡(luò)ava的oo,多態(tài)作為oo的一個(gè)特性,在javavascrip­t類構(gòu)造器張可以體現(xiàn)出來(lái),但是其中方法怎么不可以重載呢?

 GoADPASS 發(fā)表于2005-05-24 15:17:00  IP: 61.186.252.*
什么叫占位符???

 calvin 發(fā)表于2005-05-26 00:25:00  IP: 61.186.252.*
占位符就是如果同時(shí)有如下函數(shù)
function Circle()
function Circle(i)
function Circle(i,j)

new Circle(0)表明調(diào)用的是function Cricle(i)

 Larlf 發(fā)表于2005-05-26 12:44:00  IP: 61.186.252.*
沒(méi)有看出引入prototype有什么太大的好處。
使用占位符也有較大的問(wèn)題:如果父類中有方法使用到構(gòu)造方法傳入的參數(shù)怎么辦?

 xx 發(fā)表于2005-05-26 18:42:00  IP: 61.186.252.*
如何獲得子類集成過(guò)來(lái)的父類的變量???

 xx 發(fā)表于2005-05-26 18:45:00  IP: 61.186.252.*
//定義ChildCircle子類
function ChildCircle(radius) {
this.base=Circle;
this.base(radius);

}

ChildCircle.prototype=new Circle(0);
ChildCircle.prototype.getGirth = function () {
return 2 * this.r * this.PI ;//如何獲得子類集成過(guò)來(lái)的父類的變量???

}

如何在子類里獲得父類的變量的復(fù)本r
this.r是錯(cuò)的,this.base.r也是錯(cuò)的

 ynyangtao 發(fā)表于2005-05-28 20:38:00  IP: 61.186.252.*
其實(shí)prototype就相當(dāng)于java里的static了,你說(shuō)java缺少static行嗎?

 vv 發(fā)表于2005-05-30 12:55:00  IP: 61.186.252.*
javascript太弱了,用他來(lái)OOP感覺(jué)嘔心嚦血

 自由的飛碟 發(fā)表于2005-05-31 09:50:00  IP:
TrackBack來(lái)自《以一個(gè)最簡(jiǎn)單的例子把OO的JavaScript說(shuō)明白
》<http://www.donews.net/z954134/archive/2005/05/31/406070.aspx>

Ping Back來(lái)自:www.donews.net

 aa 發(fā)表于2005-06-06 14:27:00  IP: 61.186.252.*
js高手可不是這樣寫(xiě)的.

 高溫接近開(kāi)關(guān) <http://www.5118.com/> 發(fā)表于2005-06-29 16:47:00  IP: 61.186.252.*
真系不是普通的難

 yzsin 發(fā)表于2005-08-26 09:32:00  IP: 211.100.4.*
javascript的類定義太不清晰了,與java要差太離譜了, vbscript的類定義還是比較清晰,好像只是不支持繼承,語(yǔ)法與vb類似

 amao 發(fā)表于2005-12-28 14:44:00  IP: 61.135.152.*
var Circle = function() {
var obj = new Object();
obj.PI = 3.14159;

obj.area = function( r ) {
return this.PI * r * r;

}
return obj;
}

var c = new Circle();
alert( c.area( 1.0 ) );

這個(gè)是不是更好理解,更像JAVA的寫(xiě)法

 amao 發(fā)表于2005-12-28 15:00:00  IP: 61.135.152.*
var Circle = new Object();
Circle.PI = 3.14159;
Circle.prototype.Area = function( r ) {
return this.PI * r * r;

}

alert( Circle.Area( 1.0 ) );

這樣寫(xiě)也可以

 amao 發(fā)表于2005-12-28 15:05:00  IP: 61.135.152.*
上面寫(xiě)錯(cuò)了
var Circle = new Object();
Circle.PI = 3.14159;
Circle.Area = function( r ) {
return this.PI * r * r;

}

alert( Circle.Area( 1.0 ) );

 amao 發(fā)表于2005-12-28 15:07:00  IP: 61.135.152.*
還可以這樣寫(xiě)
var Circle={
"PI":3.14159,
"area":function(r){
return this.PI * r * r;

}
};

alert( Circle.area(1.0) );

 amao 發(fā)表于2005-12-28 15:13:00  IP: 61.135.152.*
個(gè)人很反對(duì)JS寫(xiě)成OO的形式,真是沒(méi)有必要

 amao 發(fā)表于2005-12-28 15:21:00  IP: 61.135.152.*
更絕的寫(xiě)法

var Circle = new Function("this.PI = 3.14159;this.area = function( r )
{return r*r*this.PI;}");
alert( (new Circle()).area(1.0) );

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Javascript 沒(méi)有 OO?是你不知道 OO 是什麼吧
HTML5時(shí)鐘效果實(shí)現(xiàn)代碼
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服