溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

[教程]JScript中的變量引用規(guī)則(補充,函數用法說明) (轉)

發(fā)布時間:2020-08-10 17:44:34 來源:ITPUB博客 閱讀:100 作者:worldblog 欄目:編程語言
[教程]JScript中的變量引用規(guī)則(補充,函數用法說明) (轉)[@more@]

[教程]jscript中的變量引用規(guī)則(補充,函數用法說明)
by .NET.com/,http://lostinet.d2g.com">http://www.lostinet.com/,http://lostinet.d2g.com

第一篇:XML">http://www.csdn.net/expert/topic/787/787738.xml

我高考語文才496分啊,,,慘?!,F在要說些什么,都不知道。。。
還是用例子開始吧:不過例子和分析,現在寫在一起了。

這個只是補充說明,看不看都沒有關系。不會的還是看看好:)

2。1 -》函數被傳遞
{---{---{---{---{---{---{---{---{---{---{---{---{---{---{---{---
var func=function(){alert("ok")};
function CallFunc(f)
{
 f();
}
CallFunc(func);
---}---}---}---}---}---}---}---}---}---}---}---}---}---}---}---}
一般的應用中,傳遞函數是很少見的。但是對于很多動態(tài)的應用,傳遞函數就很正常了。
這個例子,func是一個函數。CallFunc(func)時,把func傳遞給CallFunc中的f
所以在
function CallFunc(f)
{
 f();
}
中,f是一個函數。所以調用f()是可以的。實際上就是調用function(){alert("ok")};

2。2 -》函數作為方法
{---{---{---{---{---{---{---{---{---{---{---{---{---{---{---{---
var obj={};//var obj=new object();
obj.value=14;
var func=function(number){alert(this.value+number)};
obj.alert=func;
obj.alert(25);
---}---}---}---}---}---}---}---}---}---}---}---}---}---}---}---}

這個例子,說明了函數作為一個對象的方法,是怎樣使用的。
this是一個特殊的變量,它是一個參數。
當執(zhí)行obj.alert(25)時,
其實是執(zhí)行function(number){alert(this.value+number)};
而這個過程中obj也傳遞過去了,化身為this。
這個過程大家都比較了解,所以也不多說了。
要執(zhí)行對象的方法,只有兩個途徑:
一:obj.method(); 必須有一個“.”的存在。
二:func.apply(obj,args),func.call(obj,arg1,arg2...),這個需要JScript5.5的支持。

2。3 -》函數作為方法,2
{---{---{---{---{---{---{---{---{---{---{---{---{---{---{---{---
var obj={};//var obj=new Object();
obj.value=14;
var func=function(number){alert(this.value+number)};
obj.alert=func;
var method=obj.alert
method(4);
---}---}---}---}---}---}---}---}---}---}---}---}---}---}---}---}

為什么顯示NaN呢?
雖然method=obj.alert,但是傳遞的,卻只是obj["alert"]本身,即func
所以在執(zhí)行func中,沒有隱含的對象傳過去給this
this沒有被賦值,在IE中默認是window,在其他變量空間就依賴有this的空間來判斷

2。4 -》函數作為對象使用。
{---{---{---{---{---{---{---{---{---{---{---{---{---{---{---{---
function aaa()
{
 alert(this);
}
function aaa.bbb()
{
 alert(this);
}
var func=function(){};
func.bbb=aaa;
func.bbb();
func.bbb.bbb();
---}---}---}---}---}---}---}---}---}---}---}---}---}---}---}---}
我沒有精神了,你自己理解吧。。


2。5 -》函數作為對象使用2。
{---{---{---{---{---{---{---{---{---{---{---{---{---{---{---{---
function func(){};
function func.a(){return "a"};
function func.b(){return "b"};
function func.c(){return "c"};
for(var i in func)alert(func[i]());
---}---}---}---}---}---}---}---}---}---}---}---}---}---}---}---}

2。6 -》caller
{---{---{---{---{---{---{---{---{---{---{---{---{---{---{---{---
function Func()
{
 alert(Func.caller);
}
function CallFunc()
{
 alert(CallFunc.caller);
 Func();
}
CallFunc();
---}---}---}---}---}---}---}---}---}---}---}---}---}---}---}---}
因為CallFunc()是全局執(zhí)行的,所以沒有函數調用CallFunc,所以CallFunc.caller為null
而在Func,是由CallFunc調用的,所以第二次顯示CallFunc

2。7 -》不依賴名字,在函數中取函數本身
{---{---{---{---{---{---{---{---{---{---{---{---{---{---{---{---
function CallFunc()
{
 alert(CallFunc);
 var fs=function(fs){return fs.caller};
 fs=fs(fs);
 alert(fs);
}
CallFunc();
---}---}---}---}---}---}---}---}---}---}---}---}---}---}---}---}
第一次alert是做個示范。這個是直接引用CallFunc的。
var fs定義了一個很特殊的函數。
當執(zhí)行fs=fs(fs)時,就取回fs的調用者CallFunc,所以fs引用了CallFunc了

2。8 -》arguments
{---{---{---{---{---{---{---{---{---{---{---{---{---{---{---{---
function alertBatch()
{
 var args=alertBatch.arguments;
 var arr=[];
 for(var i=0;i arr[i]=args[i];
 alert(arr.join(""));
}
alertBatch(1,"a",2,"b",3,"c",4,"d",5,"e");
---}---}---}---}---}---}---}---}---}---}---}---}---}---}---}---}
alertBatch.arguments是調用該函數的參數的數組(不是Array)
根據這個,函數可以處理多個參數的情況。

2。9 -》Function.prototype.toString
{---{---{---{---{---{---{---{---{---{---{---{---{---{---{---{---
function Function.prototype.toString()
{
 return "object Function";
}
function func()
{
}
alert(func);
---}---}---}---}---}---}---}---}---}---}---}---}---}---}---}---}

函數的其他方面就不多說了。JScript的參考書都有說明。


 


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI