http://www.javaeye.com/wiki/Object_Oriented_JavaScript/1279-javascript-object-oriented-technology-one),鍙繘琛屼簡閲嶆柊鎺掔増浠ヤ究鏀惰棌銆?br />
鏂囦腑鎵鏈夎嫳鏂囪鍙?紼嬪簭璇彞闄ゅ)錛岄兘寮曡嚜<<javascript-the definitive guide,5th edition>>銆?br />
------------------------------------------------------------------------------------
鍑芥暟
javascript鍑芥暟鐩鎬俊澶у閮藉啓榪囦笉灝戜簡,鎵浠ユ垜浠繖閲屽彧鏄畝鍗曚粙緇嶄竴涓嬨?br />
鍒涘緩鍑芥暟:
function f(x) {........}
var f = function(x) {......}
涓婇潰榪欎袱縐嶅艦寮忛兘鍙互鍒涘緩鍚嶄負f()鐨勫嚱鏁幫紝涓嶈繃鍚庝竴縐嶅艦寮忓彲浠ュ垱寤哄尶鍚嶅嚱鏁般傚嚱鏁板畾涔夋椂鍙互璁劇疆鍙傛暟錛屽鏋滀紶緇欏嚱鏁扮殑鍙傛暟涓暟涓嶅錛屽垯浠庢渶宸﹁竟璧蜂緷嬈″搴旓紝鍏朵綑鐨勭敤undefined璧嬪鹼紝濡傛灉浼犵粰鍑芥暟鐨勫弬鏁板浜庡嚱鏁板畾涔夊弬鏁扮殑涓暟錛屽垯澶氬嚭鐨勫弬鏁拌蹇界暐銆?br />
1
function myprint(s1,s2,s3)
{
2
alert(s1+"_"+s2+"_"+s3);
3
}
4
myprin(); //undefined_undefined_undefined
5
myprint("string1","string2"); //string1_string2_undefined
6
myprint("string1","string2","string3","string4"); //string1_string2_string3
鍥犳錛屽浜庡畾涔夊ソ鐨勫嚱鏁幫紝鎴戜滑涓嶈兘鎸囨湜璋冪敤鑰呭皢鎵鏈夌殑鍙傛暟鍏ㄩ儴浼犺繘鏉ャ傚浜庨偅浜涘繀欏葷敤鍒扮殑鍙傛暟搴旇鍦ㄥ嚱鏁頒綋涓姞浠ユ嫻?鐢?鎿嶄綔絎?錛屾垨鑰呰緗粯璁ゅ肩劧鍚庡悓鍙傛暟榪涜鎴?||)鎿嶄綔鏉ュ彇寰楀弬鏁般?br />
1
function myprint(s1,person)
{
2
var defaultperson =
{ //榛樿person瀵硅薄
3
"name":"name1",
4
"age":18,
5
"sex":"female"
6
};
7
if(!s1)
{ //s1涓嶅厑璁鎬負絀?nbsp;
8
alert("s1 must be input!");
9
return false;
10
}
11
person = person || defaultperson; //鎺ュ彈person瀵硅薄鍙傛暟
12
alert(s1+"_"+person.name+":"+person.age+":"+person.sex);
13
};
14
15
myprint(); //s1 must be input!
16
myprint("s1"); //s1_name1:18:female
17
myprint("s1",
{"name":"sdcyst","age":23,"sex":"male"}); //s1_sdcyst:23:male
鍑芥暟鐨刟rguments灞炴?br />
鍦ㄦ瘡涓涓嚱鏁頒綋鐨勫唴閮紝閮芥湁涓涓猘rguments鏍囪瘑絎︼紝榪欎釜鏍囪瘑絎︿唬琛ㄤ簡涓涓狝rguments瀵硅薄銆侫rguments瀵硅薄闈炲父綾諱技浜嶢rray(鏁扮粍)瀵硅薄錛屾瘮濡傞兘鏈塴ength灞炴э紝璁塊棶瀹冪殑鍊肩敤"[]"鎿嶄綔絎﹀埄鐢ㄧ儲寮曟潵璁塊棶鍙傛暟鍊箋備絾鏄紝浜岃呮槸瀹屽叏涓嶅悓鐨勪笢瑗匡紝浠呬粎鏄〃闈笂鏈夊叡鍚岀偣鑰屽凡(姣斿璇翠慨鏀笰rguments瀵硅薄鐨刲ength灞炴у茍涓嶄細鏀瑰彉瀹冪殑闀垮害)銆?br />
1
function myargs()
{
2
alert(arguments.length);
3
alert(arguments[0]);
4
}
5
myargs(); //0 --- undefined
6
myargs("1",[1,2]); //2 --- 1
Arguments瀵硅薄鏈変竴涓猚allee灞炴э紝鏍囩ず浜嗗綋鍓岮rguments瀵硅薄鎵鍦ㄧ殑鏂規硶銆傚彲浠ヤ嬌鐢ㄥ畠鏉ュ疄鐜板尶鍚嶅嚱鏁扮殑鍐呴儴閫掑綊璋冪敤銆?br />
1
function(x)
{
2
if (x <= 1) return 1;
3
return x * arguments.callee(x-1);
4
} (section8.2)
------------------------------------------------------------------
Method--鏂規硶
鏂規硶灝辨槸鍑芥暟銆傛垜浠煡閬擄紝姣忎竴涓璞¢兘鍖呭惈0涓垨澶氫釜灞炴э紝灞炴у彲浠ユ槸浠繪剰綾誨瀷錛屽綋鐒朵篃鍖呮嫭瀵硅薄銆傚嚱鏁版湰韜氨鏄竴縐嶅璞★紝鍥犳鎴戜滑瀹屽叏鍙互鎶婁竴涓嚱鏁版斁鍒頒竴涓璞¢噷闈紝姝ゆ椂錛岃繖涓嚱鏁板氨鎴愪簡瀵硅薄鐨勪竴涓柟娉曘傛鍚庡鏋滆浣跨敤璇ユ柟娉曪紝鍒欏彲浠ラ氳繃瀵硅薄鍚嶅埄鐢?."鎿嶄綔絎︽潵瀹炵幇銆?br />
1
var obj =
{f0:function()
{alert("f0");}}; //瀵硅薄鍖呭惈涓涓柟娉?nbsp;
2
function f1()
{alert("f1");}
3
obj.f1 = f1; //涓哄璞℃坊鍔犳柟娉?nbsp;
4
5
obj.f0(); //f0 f0鏄痮bj鐨勬柟娉?nbsp;
6
obj.f1(); //f1 f1鏄痮bj鐨勬柟娉?nbsp;
7
f1(); //f1 f1鍚屾椂鍙堟槸涓涓嚱鏁?鍙互鐩存帴璋冪敤
8
f0(); //f0浠呬粎鏄痮bj鐨勬柟娉?鍙兘閫氳繃瀵硅薄鏉ヨ皟鐢?nbsp;
鏂規硶鐨勮皟鐢ㄩ渶瑕佸璞$殑鏀寔錛岄偅涔堝湪鏂規硶涓浣曡幏鍙栧璞$殑灞炴у憿錛焧his!this鍏抽敭瀛楁垜浠凡緇忓緢鐔熸倝浜嗭紝鍦╦avascript鐨勬柟娉曚腑錛屾垜浠彲浠ョ敤this鏉ュ彇寰楀鏂規硶璋冪敤鑰?瀵硅薄)鐨勫紩鐢紝浠庤岃幏鍙栨柟娉曡皟鐢ㄨ呯殑鍚勭灞炴с?br />
1
var obj =
{"name":"NAME","sex":"female"};
2
obj.print = function()
{ //涓哄璞℃坊鍔犳柟娉?nbsp;
3
alert(this.name + "_" + this["sex"]);
4
};
5
obj.print(); //NAME_female
6
obj.sex = "male";
7
obj.print(); //NAME_male
涓嬮潰鎴戜滑鏉ヤ竴涓洿鍔犻潰鍚戝璞$殑渚嬪瓙錛?br />
1
var person =
{name:"defaultname",
2
setName:function(s)
{
3
this.name = s;
4
},
5
"printName":function()
{
6
alert(this.name);
7
}}
8
person.printName(); //defaultname
9
person.setName("newName");
10
person.printName(); //newName
鍦ㄤ笂闈㈢殑渚嬪瓙涓紝瀹屽叏鍙互鐢╬erson.name=..鏉ョ洿鎺ユ敼鍙榩erson鐨刵ame灞炴э紝鍦ㄦ鎴戜滑鍙槸涓轟簡灞曠ず涓涓嬪垰鎵嶆彁鍒扮殑鍐呭銆?br />
鍙︿竴縐嶆敼鍙榩erson灞炴х殑鏂規硶灝辨槸錛氬畾涔変竴涓猣unction錛屾帴鏀朵袱涓弬鏁幫紝涓涓槸person錛屼竴涓槸name鐨勫鹼紝鐪嬭搗鏉ュ儚鏄繖鏍鳳細changeName(person,"newName")銆傚摢縐嶆柟娉曞ソ鍛?寰堟槑鏄撅紝渚嬪瓙涓殑鏂規硶鏇村艦璞★紝鏇寸洿瑙備竴浜涳紝鑰屼笖濂藉儚鏈変簡閭d箞涓鐐歸潰鍚戝璞$殑褰卞瓙銆?br />
鍐嶆寮鴻皟涓涓嬶紝鏂規硶(Method)鏈韓灝辨槸鏄嚱鏁?function)錛屽彧涓嶈繃鏂規硶鐨勪嬌鐢ㄦ洿鍙楅檺鍒躲傚湪鍚庨潰鐨勭瘒騫呬腑錛屽鏋滄彁鍒板嚱鏁幫紝閭d箞鎻愬埌鐨勫唴瀹瑰悓鏍烽傜敤浜庢柟娉曪紝鍙嶄箣鍒欎笉灝界劧銆?br />
鍑芥暟鐨刾rototype灞炴?/strong>
姣忎竴涓嚱鏁伴兘鍖呭惈浜嗕竴涓猵rototype(鍘熷瀷)灞炴э紝榪欎釜灞炴ф瀯鎴愪簡javascript闈㈠悜瀵硅薄鐨勬牳蹇冨熀紜銆傚湪鍚庨潰鎴戜滑浼氳緇嗚璁恒?

]]>