锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
javascript 鐨?function 瀵硅薄鍦ㄨ皟鐢ㄨ繃紼嬩腑鍏鋒湁涓涓?arguments 灞炴э紝瀹冩槸鐢辮剼鏈В閲婂櫒鍒涘緩鐨勶紝榪欎篃鏄垱寤?arguments 鍞竴閫斿緞銆?Arguments 瀵硅薄鍙互鐪嬩綔鏄竴涓?Array 瀵硅薄錛屽畠鍏鋒湁 length 灞炴э紝鍙互閫氳繃搴忓彿璁塊棶姣忎竴涓弬鏁般?Arguments 鏈変釜 callee 灞炴э紝鍙互鑾峰彇鍒版墽琛岀殑 function 瀵硅薄鐨勫紩鐢ㄣ?
eg 錛?
funtion f1 錛?n 錛?
{
if(n<=0)
{
return 1;
}else
{
return n*arguments.callee(n-1);// 瀹為檯鍚?return n*f1(n-1);
}
涓婁緥鍒╃敤 callee 灞炴у疄鐜頒簡鍖垮悕鐨勯掑綊璋冪敤銆?
2. apply 鍜?call 鏂規硶錛?
apply 鏂規硶鍜?call 鏂規硶鏈夊艦浼間箣澶勶紝涓よ呴兘灝嗗嚱鏁扮粦瀹氬埌鍏朵粬瀵硅薄涓婃墽琛屻?
涓句緥錛?
obj1.fun1.apply(obj2,[“test”]);
鍚箟錛氭槸灝?obj1 瀵硅薄鐨勬柟娉?fun1 緇戝畾鍒?瀵硅薄 obj2 涓婏紝騫朵嬌鐢ㄥ弬鏁?test 銆?
obj1.fun1.call(obj2,“test”);
鍚箟鍚屼笂錛屼粬浠尯鍒槸鍦?apply 鍙傛暟浠?array 瀵硅薄浼犲叆銆傝?call 鏄緷嬈′紶鍏ュ弬鏁扮殑銆?
3. this 鍜?with
this 鍦ㄥ璞$殑鏂規硶琚皟鐢ㄦ椂鍊欙紝鎸囦唬璋冪敤璇ユ柟娉曠殑瀵硅薄瀹炰緥銆?
浣跨敤 with 璇彞鏃訛紝浠g爜鍙樺緱鏇村姞鐭笖鏄撹錛?
娌℃湁鐢?with 涔嬪墠
x = obj.fun1(“a”);
y = obj.fun2(“b”);
鐢?with 涔嬪悗錛屽氨鍙樻垚錛?
with(obj)
{
x=fun1(“a”);
y=fun2(“b”);
}
4. for in
鍦?javascript 涓彲浠ヤ嬌鐢?for in 璇彞閬嶅巻瀵硅薄涓墍鏈夊睘鎬у拰鏂規硶銆備緥濡備笅闈㈢殑浠g爜灝遍亶鍘嗕簡 test1 瀵硅薄鐨勫睘鎬у拰鏂規硶錛屽鏋滄槸灞炴у垯杈撳嚭灞炴у鹼紝濡傛灉鏄柟娉曞垯鎵ц鏂規硶銆?
for(p in t)
{
if(typeof(t[p])==”function”)
{
t[p]();
}else
{
alert(t[p]);
}
}
浜屻?javascript 闈㈠悜瀵硅薄緙栫▼瀹炵幇
瀵規瘮 java 涓潰鍚戝璞$紪紼嬩腑緇ф壙錛屼互鍙婂皝瑁咃紝澶氭佺瓑甯歌姒傚康錛岃繘琛屾葷粨銆?
1. 綾葷殑澹版槑
棣栧厛鏉ョ湅涓嬬被鐨勫疄鐜幫紝鍓嶉潰宸茬粡浣跨敤浜嗕竴縐嶅0鏄庣被鐨勬柟娉曘?
function test1()
{
this.prop1 = “prop1”;
this.prop2 =”prop2”;
this.fun1 = function()
{
……
}
}
涓婇潰浠g爜澹版槑浜嗕袱涓叕鏈夊睘鎬э紝鍜屼竴涓柟娉曘傚ぇ瀹墮兘鐭ラ亾綾婚噷闄や簡鍏湁鎴愬憳榪樺彲鑳借繕鏈変竴浜涚鏈夋垚鍛樺彉閲忥紝浣嗘槸 javascript 騫舵病鏈夋彁渚涚浉搴旂殑鏈哄埗鏉ュ畾涔夌鏈夋垚鍛樺彉閲忥紝涓嶈繃鍒╃敤涓浜?javascript 鐨勫皬鎶宸у氨鍙互瀹炵幇縐佹湁鎴愬憳鍙橀噺銆傚涓嬶細
function test1 ()
{
var prop3 = “test”;
this.prop1 = “prop1”;
this.prop2 =”prop2”;
this.fun1 = function()
{
……
}
}
涓婇潰浠g爜閫氳繃 var 鍏抽敭瀛楀0鏄庝簡涓涓眬閮ㄥ彉閲?prop3 錛屽叾浣滅敤鍩熸槸 test1 綾誨畾涔夌殑鍐呴儴錛岃繖鏍峰氨瀹炵幇浜嗗彉閲忕鏈夊寲銆?
鍙﹀鍦?javascript 涓彲浠ラ氳繃涓嬮潰鐨勬柟寮忓0鏄庨潤鎬佸睘鎬у拰闈欐佹柟娉曘?
< script LANGUAGE =" JavaScript " >
function test ( n )
{
}
test . staticProp = " static prop test!" ;
test . staticMechod = function ()
{
alert ( "adfadfd" );
}
alert ( test . staticProp );
test . staticMechod ();
</ script >
瀹為檯涓婃病鏈夋劅瑙夊埌 javascript 涓潤鎬佺殑蹇呰鎬э紙涓嶅儚 java 錛夛紝涔熻鏄垜瀵逛功鏈悊瑙g殑涓嶅錛屾垨鑰呮槸搴旂敤澶皯銆傚鏋滄湁璇昏呮湅鍙嬶紝鏈変笉鍚岃璇嗭紝嬈㈣繋鍙戣〃鐪嬫硶錛屽ぇ瀹朵氦嫻併?
濡傛灉瑕佸0鏄庝竴涓被鐨勫疄渚嬪睘鎬ф垨鏂規硶錛屽彲浠ヤ嬌鐢?javascript 涓璞$殑 prototype 灞炴с備緥濡傦細
test1.prototype.prop1 = “prop1”;
test1.prototype.method1 = function(){}
鍒╃敤 prototype 灞炴э紝鍙互瀹炵幇鍙﹀涓縐嶇被鐨勫0鏄庢柟寮忥細
< script LANGUAGE =" JavaScript " >
function test ()
{}
test . prototype =
{
p1 : "p1" ,
p2 : "p2" ,
f1 : function ()
{
alert ( "f1" );
}
}
var te = new test ();
te . f1 ();
</ script >
涓婇潰浣跨敤 {} 鐨勬柟寮忓0鏄庝簡涓涓尶鍚嶅璞★紝澶ф嫭鍙峰唴鐢ㄩ楀彿灝嗗睘鎬т笌鍊肩殑鍒楄〃鍒嗛殧寮銆傚彲浠ョ湅鍒幫紝閲囩敤 prototype 鐨勬柟寮忓0鏄庣被錛屼唬鐮佹洿鍔犵畝媧佹槑浜嗐傚洜姝よ繖縐嶆柟寮忓湪寰堝 AJAX 妗嗘灦涓緱鍒板箍娉涘簲鐢ㄣ?
2. 緇ф壙
javascript 鏈韓騫舵病鏈夋彁渚涚戶鎵匡紝閭d箞濡備綍瀹炵幇綾葷殑緇ф壙鍛紵鏈鐩存帴澶ф柟娉曟槸澶嶅埗鍘熸柟娉曪紝鐒跺悗鍦ㄩ噷闈㈠姞鍏ユ柊鎴愬憳銆備絾榪欐牱鍋氬疄鍦ㄦ槸钀藉悗錛屽洜涓哄綋鍘熺被鍙樺寲錛屾柊緇ф壙鐨勭被榪樿鎵嬪姩鍙樺寲錛屽鏄撳嚭閿欍傝屼笅闈㈣繖縐嶇敤 for in 鎺у埗鐨勫鍒跺氨涓嶉偅涔堝鏄撳嚭閿欎簡銆?
function test1()
{
for(p in test.prototype)
{
test1.prototype[p] = test.prototype[p];
}
test1.prototype.newmethod = function()
{
alert(“newfunction”);
}
}
3. 澶氭?
澶氭佺殑鏄疄鐜板彲浠ラ噰鐢ㄥ拰緇ф壙綾諱技鐨勬柟娉曘傞鍏堝畾涔変竴涓娊璞$被錛屽叾涓彲浠ヨ皟鐢ㄤ竴浜涜櫄鏂規硶錛岃櫄鏂規硶鍦ㄦ娊璞$被涓病鏈夊畾涔夛紝鑰屾槸閫氳繃鍏跺叿浣撳疄鐜扮被鏉ュ疄鐜扮殑銆?
< script LANGUAGE =" JavaScript " >
// 涓涓戶鎵挎柟娉?
Object . extend = function ( destination , source )
{
for ( pro in source )
{
destination [ pro ] = source [ pro ];
}
return destination ;
}
// 涓涓熀綾?
function base (){}
base . prototype =
{
f1 : function ()
{
this . oninit ();
}
}
// 鎵╁睍1
function test1 ()
{
}
test1 . prototype = Object . extend (
{
prop : "prop" ,
oninit : function ()
{
alert ( this . prop );
}
}, base . prototype );
// 鎵╁睍2
function test2 ()
{
}
test2 . prototype = Object . extend (
{
prop2 : "prop2" ,
oninit : function ()
{
alert ( this . prop2 );
}
}, base . prototype );
// 嫻嬭瘯
var t1 = new test1 ();
t1 . f1 ();
var t2 = new test2 ();
t2 . f1 ();
</ script >