国产一区二区三区毛片_亚洲乱码AV中文一区二区_亚洲精品无码专区在线播放_日韩欧美一二_咪咪av影院_欧久久av一区二区

我的工控
不積跬步,無以至千里,不積小流,無以成江海。
級別: 略有小成
精華主題: 0
發帖數量: 115 個
工控威望: 287 點
下載積分: 424 分
在線時間: 53(小時)
注冊時間: 2010-12-20
最后登錄: 2024-09-14
查看我的工控的 主題 / 回貼
樓主  發表于: 2010-12-21 21:33
引言:Java是基于對象的,為什么這么說呢。作為腳本語言,操控DHTML等網頁內部元素不應該太復雜,為了簡化程序設計,Java中創建了document等重要對象,這些對象是Java的固有對象,用起來十分方便。document對象不妨簡單的理解為用戶界面對象,使用Java編程時常常圍繞著它,而不需要煩鎖的定義、創建等過程。所以Java更多考慮對現有對象的控制,而對對象的創建擴展的能力較差。即便如此,Java仍可創建對象,只是沒有C++那么完整。
一、本文名詞解釋:變量、串對象、對象變量(對象)、原型、原型對象、實例、函數對象(構造函數、構造器)。
為了形象的說明問題,引入名詞“構造器”,構造器指函數對象,在JS中構造器也是構造函數。
對象變量常稱為對象。當變量是個對象時,實際上它是一個指針,該指針指向對象的實際內存位置。對象指針可以復制,內存對象不可復制。要實現真正的復制是一件很麻煩的事情,可以想象,一個對象指針指向document時,要想復制它就很困難,因為document內部有眾多元素并且存在循環引用的問題。
JS中字串不是對象,它可復制,但String對象則不同,它是對象。串變量、數值變量等都不是對象,在賦值時是復制,對象的賦值是指針的復制,而不是實際對象的復制,JS里指針的復制可理解為引用。
關于構造器、構造器的原型(類的原型)、實例、引用原型:構造器是一個函數,函數中有個特殊成員,名為prototype,它是原型對象。函數的prototype對象的成員就是類的屬性、方法的定義部分,但portotype的成員不是構造器屬性、方法的定義,實例是用“new 函數名()”等方法創建的某一個實際的對象。創建對象時須由構造器創建,實例繼承類的構造器portotype中的屬性及方法,為了實現繼承,實例以隱藏方式引用原型對象,這樣當調用繼承的屬性、方法時不需要指明prototype,除此以外,構造器還初始化類,可動態創建類的其它屬性及方法。函數的原型對象就好像可供某工程施工者或本工程項目的用戶使用的公用資料、設備的倉庫,構造器就象圖紙、施工方案等。類的實例就像是根據圖紙建起來的房子(工程案例)。一個實例創建后,它就使用了一定的資源,資源的使用量與構造器的設計有關。一個實例的創建依賴構造器,創建后的實例稱之為某某類(某某構造器)的實例。

二、類的原型與類的實例的創建
在C++中,使用class來定義類。例:
//-----------
class A{
public:
int p;
A(){ p=3; }
m(){ p++; }
};
A b; //創建實例b
//-----------
1、在JS中,函數不僅僅是函數,是一個對象實例。例:
//-----------
a(){…}//創建了一個實例a
a.p=3;//為a添加屬性p
c=a;//c變量是對實例a的引用
c();//與a();調用同一函數
//-----------
2、在JS中既用于定義函數又可用于創建類,用于創建類時,它取代class定義類,這時它就充當了類的構造器的作用,類的名稱就是函數名本身。例:
//-----------
a(){//a類的構造器
this.p=3; //創建public屬性
this.m=(x){this.p+=x;} //創建public方法
}
b=new a();//創建a類的實例
b.m(2);//調用方法
alert(b.p); //結果是5
//-----------
b=new a();語句創建a類的實例。用new創建了一個空對象,new后的構造函數a()對其初始化。
上例中this.p=3;是給當前對象動態創建屬性p,p不是a的屬性,卻是b的屬性,a的屬性并不會復制給b。構造函數執行時通過this關鍵字實現對b動態創建屬性p,初值為3,用b.p取得該屬性。
3、this是一個特殊的對象,表示當前函數的父對象。就是說,誰的成員函數被調用,該函數中的this就是誰。這樣,通過this就可將父對象移到函數體內部來使用,生存期限為函數執行結束。JS的全局變量、函數直接隸屬于window。它們的父對象是window。調用一個函數時,不指明父對象,函數中的this指window。例:
//-----------
var t=3;
alert(this.t);//顯示3
alert(t);//顯示3
//-----------
//-----------
a(){ this.p=3; }
a();//或a(); a()中的this指window,結果是undefined
b=new Array();
b.c=a;
b.c(); //a中的this指b,結果是3
//-----------
//-----------
a(){ alert(this.b);}
c=new Array("cc");
c.b=3;
c.m=(){ a(); }
c.m(); //顯示undefined,程序中a();語句沒用指明父對象,所以a()中的this指當前腳本的祖宗對象window。
//-----------
一個比較特殊的情況:new a()創建了對象,此時該對象是a()的父對象,該對象只有this可引用得到,a()執行后自動將this返回。但試圖調用b.a()是錯誤的,因為構造函數只能執行一次,執行后就不在是b的成員了。
例:
4、用new創建對象的細節:
使用new a()創建實例時,首先創建空對象,并隱藏引用構造器的的原型對象,使得本實例繼承原型對象中的所有成員。我們不能直接訪問這個隱藏引用,對象建后,內部引用也建立,這時如果重建構造器中的原型對象,該構造器中的原型對象引用仍是原來的,關于prototype的問題下文將詳細說明。其次是執行構造函數,對該對象初始化。其三,將新對象返回。

三、如何創建私有屬性呢?
當函數內部的對象被注冊為外部變量時,函數體內的其它變量成為副本保留。注意,父對象或用new創建的對象也會被注冊到函數體內。
//-----------
a(){
var p=3; //創建private屬性,它是函數內部的變量
  cc(){}//創建private方法
this.m=(x){p+=x; return p;} //創建public方法
}
b=new a();//創建實例
alert(b.m(2)); //結果是5
//-----------
上例中p為對象b的私有屬性,對象的私有屬性、方法只能被其成員方法調用。每次用new創建對象時,構造函數內部的變量及函數都會產生副本,供new創建的對象的成員函數使用。如果創建多個對象,就產生多個副本。每個副本當然會占用一定的內存空間,如何減少副本所占的空間呢?有兩種方法可解決,其一是對函數做引用處理,其二使用繼承的辦法。這里先講一下前者,后者涉及繼承問題,比較麻煩,下文再敘。
當把成員函數移到構造函數外,構造函數在創建方法時使用函數作引用即可減少內存占用。
mm(x){ this.p+=x;}
a(){
this.p=3; //創建private屬性
this.m=mm; //創建public方法,由于mm是個函數對象,這個賦值只是個引用。
}
b=new a();//創建實例
b.m(2);
alert(b.p); //結果是5
一般情況下,內存占用了就不會主動釋放。
這種方式建立的成員函數無法訪問private成員。

四、構造函數中能不能有返回值?
在C++中,構造函數是不能有返回值的。而在java中,用new a()已經創建實例,那么返回值又有何用?其實,當返回值為對象時,new創建的實例不被采用,而使用返回的對象。如:你返回document對象、數組對象、String對象(不是串) 、用new創建的對象等。
a(){
var th=new Array();
th.p=3;
return th;
}
b=new a(); //等價于b=a();使用new時多創建了一個繼承a.prototype的空對象。private空間不變。
使用上例原理創建對象有不少好處:創建public屬性、方法是在th中完成的而不是在this中完成的。this用起來雖然方便但容易造成混亂,當程序比較長是,本人不大喜歡this。private屬性、方法的創建則與前面講的一樣。本例中由于a()有返回值,b接收到的是th對象,b就是th對象的引用。與new a()生成的對象無關,a對象中的prototype也不會被繼承的。有意思的是,當a()返回值是對象時,a()的私有空間沒有釋放,它做為b的private空間,因此這里的b=new a();與b=a();是一樣的,都能訪問其私有空間。再推廣,只要函數內的對象被返回到函數體外部或直接賦值(引用)給外部變量,那么該函數每次執行的private空間就不會被釋放,供這個外部對象變量使用,從語句的形式上看,當函數執行時,只要讓外部變量引用內部對象,該函數就已充當構造器的作用了。例:
//------------------
var kk;
a(){
var c=3;
var th=new Array();
th.m=(){alert(c);}
kk=th;
}
a();
kk.m(); //顯示3
//------------------
當調用函數創建實例,與此同時函數內部對象也被其它外部變量引用時,那么該實例與這個外部變量共用同一個私有空間。例:
var kk;
a(){
var c=3;
th=new Array();
kk=th;
th.m=(){c++; return c;}
this.m=(){c++; return c;}
}
b=new a();
alert(b.m()); //顯示4
alert(kk.m()); //顯示5

五、使用prototype實現繼承(靜態創建成員)
//------------------
a(){ a.prototype.p=3; }
b=new a();//創建實例
//------------------
portotype是對象特有的屬性,類的原型放在的prototype中,我們稱prototype為原型對象,實例繼承原型對象中的所有成員,實例能過隱藏引用了構造器中的原型對象實際繼承,也就是說原型對象中所有成員都可以被實例直接使用,上例中b.p值為3(因為實例的原型引用是隱藏的,無須寫出prototype),而b.prototype.p則不存在。
用例子說明:prototype對象與c++中的public有一定的相似之處,在prototype中定義公有屬性、事件或方法。a.prototype.p與a.p不是同一個變量,prototype中的屬性及方法是類的原型,在new創建時,a.prototype.p并沒有復制給b.prototype.p,因為prototype是對象特有的,不是普通new生成的對象固有的,但new創建的對象內部隱藏引用了構造器中的原型對象,這樣新建的對象就可以通過這個內部引用訪問原型對象中的成員。b.p也不是a.prototype.p的副本,JS在讀取屬性時,先在自身對象中找屬性,如果找不到則在它隱藏引用的原型對象中找。因此,當b.p未定義時,b.p就是a.prototype.p的引用而不是副本;當b.p定義后,b.p就不再是a.protype.p的引用。顯然執行b.p=4是創建了b.p,并不會改變原型a.prototype.p的值。因此,原型中方法、屬性具能“透明”特點,由該原型創建的實例都可“透明”的讀取或調用當時new中的原型對象的成員而不能直接更改它,除非你引用構造器中的原型來修改。這里強調一點:構造器中有原型對象的引用,實例中也有原型對象的隱藏引用,這兩個引用當然指向同一個原型對象,如果你在創建實例后修改了構造器中的原型對象引用,那么實例中的引用的原型對象與構造器中引用的原型對象將不是同一對象。prototype的這些的特性與繼承沒有太大的區別。
構造器中的portotype里有constructor成員,它引用構造器本身。
實例有個constructor屬性,它也是繼承來的,它是對構造器的引用。例:
a(){
this.p=3;
}
a.p=4;
kk=new a();
alert(kk.constructor.p); //結果是4

六、提高prototype應用的效率
a(){
a.prototype.p=3;
a.prototype.m=(){ a.prototype.p=4;}
}
本例中定義了方法m()。由于a()也是構造函數,所以在每次用new創建時實例時都會被執行一次,在執行過程中又創建函數對象 (){ a.prototype.p=4;},并賦值給m,雖然m只是引用該函數對象,但是這個函數對象是新建的,也就是說每執行一次a()就為m方法創建了一個新的函數對象,這樣是比較耗資源的。如果把m方法的函數對象放在a()之外,m對它做引用就可節省內存。例:
abc(){ a.prototype.p=4;}
a(){
a.prototype.p=3;
a.prototype.m=abc;
}
或:
a(){
a.prototype.p=3;
}
a.prototype.m=(){a.prototype.p=4;}//這樣更好
有得也有失:內存節約了,但沒能以內聯方式書寫程序,程序看上去稍微亂了一點。
以下舉個錯誤的例子:
a(){
a.prototype.p=3;
}
a..m=(){a.prototype.p=4;}
b=new a();
b.m();//錯誤的調用
a..m=(){a.prototype.p=4;}語句給函數對象a添加了方法m(),這個方法不會被繼承,僅對象a自身可使用,只有在prototype中的屬性及方法才會被繼承。使用new和關鍵字均創建對象。一個創建函數對象,一個創建實例。

七、創建子類,即通過某基類創建一個新類:
//------------------
a(){ this.p2=2; }
a.prototype.p=1;

a2(){ this.p3=3;}
a2.prototype=new a(); //a2的原型對象由a生成,當然constructor也被繼承
a2.prototype.constructor=a2;//修改constructor,讓它指向自身才時正確的
a2.prototype.p4=4;

b=new a2();
//------------------
a2.prototype含有a的所有屬性
b通過內部原型引用,查找a2.prototype中的成員
a2.prototype也是用new得來的對象,當某成員找不到時,也同樣通過a2.prototype內部的原型引用查找a.prototype中的成員。這樣b繼承了a類與a2類所有的成員。如果a、a2中重名成員,則a2優每
構造器的標準引用就應是引用其自身,a2.prototype.constructor=a2;的作用是使構造器引用標準化,因為a2.prototype=new a();造成a2.prototype.constructor引用a。
六、大括號定義對象,數組定義類
略:
var _object_types = {
'' : ,
'boolean'   : Boolean, 'regexp'    : RegExp,// 'math'     : Math,// 'debug'    : Debug,// 'image'    : Image;// 'undef'    : undefined,// 'dom'      : undefined,// 'activex' : undefined,
'vbarray'   : VBArray, 'array'     : Array, 'string'    : String, 'date'      : Date, 'error'     : Error, 'enumerator': Enumerator,
'number'    : Number, 'object'    : Object}
這無盡的雨絲,有沒有勾起你的回憶?對你來說,也許我不再重要。但只要你能記得我,我就已經無比欣慰。知道這雨讓我想起了什么嗎?你的眼淚。一滴滴的,晶瑩如珠,包裹著過去歲月的沙粒,在我的心頭滾動。

主站蜘蛛池模板: 18禁男女无遮挡啪啪网站_黄色a级免费观看_奇米成人av国产一区二区三区_插插综合视频_国产成人麻豆亚洲综合无码精品_国产免费一区二区三区四在线播放_免费播放黄色_午夜在线视频播放 | 国产会所在线观看_日韩国产免费观看_亚洲精品日本_久久99精品久久久久久蜜芽_精品视频在线免费播放_国产精品福利在线观看网址_欧美日一级_久久综合精品国产一区二区三区无码 | 午夜精品久久久久久久99芒果_小SAO货水好多真紧H视频_海绵宝宝在线观看_91老司机免费精品观看_se999se成人影院_一级毛片久久久久_国产日韩久久_永久91嫩草亚洲精品人人 | 啪啪免费网站_婷婷色婷婷开心五月_亚洲人久久久_午夜香蕉成视频人网站_亚洲一线产区二线产区区别在_国产成人综合亚洲看片_成人性色生活片免费看_亚洲国产欧美人成 | 美女mm131爽爽爽作爱视频_快色在线观看视频_天天躁夜夜躁狠狠躁2021西西_久久精品国产网址_欧洲一级片_精品美女_欧美性生交XXXXX无码_熟妇人妻久久中文字幕 | 国产精品久久久久国产精品三级_免费观看老乱熟视频_日韩精品在线视频观看_天海翼精品一区二区三区_亚洲一线视频_四虎伊人_国内精品小视频_人妻出轨和黑人疯狂做国产人 国产精品国产三级国产av′_www国产精品_www.精品视频_奇米在线7777在线精品_性生交裸片免费看_91爱观看在线_夜夜草影院_中文字幕亚洲日本 | 日日撸夜夜撸_国产福利一区二区免费视频_在线播放真实国产乱子伦_884aa四虎影成人精品_91手机免费视频_亚洲另类伦春色综合图片_日韩欧美一区二区东京热_久久香蕉国产线看观看99 | 国产影视一区_亚洲av永久无码偷拍另类_日韩在线免费观看av_九色九一_亚1州区2区3区4区产品乱码2021_亚洲精品成人网站在线观看_国产乱人对白_亚洲国产精品一区二区999 | 国产成人高清啪免费观看软件_久久婷婷五月综合中文字幕_午夜成人性爽爽免费视频_中文字幕日韩在线视频_韩国理论视频_69xx免费观看_亚洲日韩国产av中文字幕_视频精品国内 | 中国的黄色一级片_日韩美女视频一区二区_91先生在线观看_a级欧美_国产在线观看一区二区三区精品_亚洲黄毛片_久操成人_国产伦精品一区二区三区照片91 | 女人与拘做受AAAAA片_久久国产AV无码一区二区老太_消息称老熟妇乱视频一区二区_中文字幕精品乱码中文字乱码_澳门永久av免费网站入口_午夜激情成人网_搡女人真爽免费视频大全_亚洲暴爽av人人爽日日碰麻豆 | 午夜精品福利影院_粉嫩呦福利视频导航大全_国产一区在线免费_超碰在线观看97_年轻的秘书4在线观看_成年人免费观看在线视频_免费无码AV一区二区三区_精品国产乱码久久久久久软件影片 | 中日韩VA无码中文字幕_久久一本热_少妇熟女久久综合网色欲_国产剧情亚洲福利_老色鬼在线精品视频在线观看_456成人网_亚洲国产精品久久久久婷爱影_精品午夜影院 | 亚洲AV无码乱码精品国产_日韩亚射吧_四虎影视国产精品久久_最近好看中文字幕日产_欧美jjzz_精品无码人妻一区二区免费蜜桃_xxxx69在线观看_青草草在线视频 | 成人青青草_日韩欧美国产综合在线一区二区三区_国精品无码一区二区三区在线蜜臀_色小妹网站_日日搞夜夜操_色综合久久久无码中文字幕_中文字幕一区二区精品区_欧美性猛交XXXX乱大交3 | 亚洲AV无码兔费综合_欧美第一夜_成人av影视在线_超色视频在线观看_日韩无码一区中文_自拍亚洲综合_亚洲精品一区二区三区精华液_国产裸体永久免费视频网站 亚洲精品综合_足疗店女技师按摩毛片_亚洲精品久久嫩草网站秘色_国产亚洲一区精品_这题超纲了动漫免费观看_国产免费av高清在线_波多野结衣1区2区3区_久久精品小短片 | 亚洲日韩精品无码专区加勒比☆_亚洲国产综合av_四虎影院在线观看av_天天爽天天搞_久久无码av亚洲精品色午夜_国产精品免费看久久久8_亚洲中文字幕永久网站_顶级欧美做受XXX000 | 一级肉体全黄裸片免费观看_免费观看成年人网站_WWW插插插无码免费视频网站_国产精品黄色小视频_999九九九久久久_51自拍视频_国产午精品午夜福利757视频播放_日本久久久www成人免费毛片 | 在线亚洲日产一区二区_最新av在线资源网无码_国产成AV人片久青草影院_免费观看高清a级毛片视频_中文字幕乱码人在线视频1区_黄色日韩视频_国产日韩久久久_久久国产精品高清 | 亚洲国产综合色产精品色在线_成熟丰满熟妇高潮XXXXX_久草色在线观看_亚洲乱操_最大胆裸体人体牲交免费_国产又粗又猛又爽又黄A_草草影视在线观看_三级黄色免费看 | 一级黄色绿像片_曰韩精品无码_日本真人啪啪免费无遮挡_欧美一区二区久久久_亚洲精品92内射_乱子伦av无码中文字幕_视频,国产成人精品日本亚洲18_水莓100完全国产免费 | 一区二区三区精品久久久_国产欧美日韩成人_亚洲免费一级_欧美视频一区二区三区_91桃色在线免费观看_在线看一级片_午夜av亚洲国产素人资源网_免费午夜无码视频在线观看 | 天天干视频网_国产精品久久久久免费a∨大胸_在线亚洲日本_成人αv_精品人妻AV一区二区三区_最新理论三级中文在线观看_久久久免费观看_最好看的中文2018 | 99riav国产一区二区三区_婷婷综合久久一区二区三区_天天干91_日韩欧美在线观看一区二区三区_中文字幕亚洲一区_99视频精品全部免费免费观看_久久精品国产亚洲AV网站_粗长巨龙挤进新婚少妇 | 亚洲欧美日本国产高清_欧美大逼逼_亚洲一区二区三区四区在线_亚洲精品色_亚洲三区在线_黄色av网站免费在线观看_a级性视频_纳粹荒淫史 | 日韩欧美在线视频播放_日韩的一区二区_亚洲综合AV在线在线播放_久久久精品三级_大地资源网高清免费观看_wwwav国产_成人av免费网址_边摸边吃奶边做爽动态 | 中文字幕三区_无码人妻久久久一区二区三区_国内揄拍国内精品人妻_porn麻豆_国产精品性夜天天视频_大陆老太XXXXXHD_91丨国产丨精品入口_精品久久久久久久免费人妻 | 久久精品国产9久久综合_午夜一级片_99小视频_国产高清av在线播放_久久人久久_2021精品国产自在现线_亚洲精品伦理熟女国产一区二区_最新在线国产 | 亚洲91视频_国产一区二区三区视频网站_2018天天弄国产大片_韩国一级片在线_porno日本xxxxx_日韩欧美一区二区三区久久婷婷_精品国产乱码久久久久久天美_一级黄色影片在线观看 | 精品国产制服丝袜高跟_男人的天堂中文字幕熟女人妻_av片免费在线播放_人人爱天天做夜夜爽_国产午夜AAA片无码无片久久_国产黄色一级片视频_久久亚洲国产精品123区_丁香激情综合久久伊人久久 | 看真人一级毛片_亚洲欧美xxxx_成人亚洲a片v一区二区三区网址_欧美白人最猛性xxxxx_免费日本一区_av人人爽_av永久在线_曰韩精品 | 在线免费观看黄色片_四虎必出精品_久久夜色精品国产噜噜噜亚洲AV_97久久精品人妻人人搡人人玩_aaa视频_精品成人免费一区二区在线播放_第一福利初水视频导航_日韩中文字幕二区 | 伊人思思_亚洲精品无码久久_中文字幕成人在线视频_国产精品免费视频软件_在线观看91免费视频_婷婷激情综合色五月久久竹菊影视_手机看日韩片_日韩视频成人 | 强行扒开双腿疯狂猛躁3p视频_久久成年网站_一区二区三区中文字幕_免费A片国产毛无码A片牛牛_巨胸喷奶水视频WWW免费网站_99热碰_麻豆视频网_一级黄色毛片免费观看 | 成本人h无码播放私人影院_隔壁黑人的巨大中文字幕_国产视频精品在线_91剧情_美女黄色a级_av动作片_人人舔人人射_精品综合久久久 | 午夜精品影院_中文JAPANESE在线播放_精品三级_林深见鹿40集高清免费观看_国产一级αv片免费观看_青草久久国产_超碰个人97_广西美女色炮150p图 | 久久精品爱_久操免费福利视频_av日韩天堂_不卡av在线免费观看_精品九一_精品一区二区三区无码视频_国产亚洲视频在线观看视频在线_亚洲精品乱码久久久v开放时间 | 亚洲AV无码专区国产乱码京东传媒_色一情一乱一乱一区91Av_av免费在线观看网址_中文字幕精品—区二区_AAA级黄色视频_日本视频一二三区_强行糟蹋人妻HD中文_精品一区2区三区 | 国产精品久久久久久久久久辛辛_日本丰满熟妇乱子伦_亚洲欧美精品综合在线观看_国产无av码在线观看_青苹果乐园1080免费_色偷偷尼玛图亚洲综合_欧美一区二区视频网站_成人做爰999 | 美女mm131爽爽爽作爱视频_快色在线观看视频_天天躁夜夜躁狠狠躁2021西西_久久精品国产网址_欧洲一级片_精品美女_欧美性生交XXXXX无码_熟妇人妻久久中文字幕 | www.日本高清_国产美女高潮视频_青青草伊人_亚洲第一a亚洲_久久人人妻人人做人人爽_午夜免费影视_av一片_精品国产乱码久久久久久蜜臂 |