分享
 
 
 

[教程]JScript中的变量引用规则(补充,函数用法说明)

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

[教程]JScript中的变量引用规则(补充,函数用法说明)

by http://www.lostinet.com/,http://lostinet.d2g.com

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

我高考语文才496分啊,,,惨。。现在要说些什么,都不知道。。。

还是用例子开始吧:不过例子和分析,现在写在一起了。

这个只是补充说明,看不看都没有关系。不会的还是看看好:)

2。1 -》函数被传递

{---{---{---{---{---{---{---{---{---{---{---{---{---{---{---{---

var func=function(){alert("ok")};

function CallFunc(f)

{

f();

}

CallFunc(func);

---}---}---}---}---}---}---}---}---}---}---}---}---}---}---}---}

一般的应用中,传递函数是很少见的。但是对于很多动态的应用,传递函数就很正常了。

这个例子,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是一个特殊的变量,它是一个参数。

当执行obj.alert(25)时,

其实是执行function(number){alert(this.value+number)};

而这个过程中obj也传递过去了,化身为this。

这个过程大家都比较了解,所以也不多说了。

要执行对象的方法,只有两个途径:

一: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

所以在执行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()是全局执行的,所以没有函数调用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定义了一个很特殊的函数。

当执行fs=fs(fs)时,就取回fs的调用者CallFunc,所以fs引用了CallFunc了

2。8 -》arguments

{---{---{---{---{---{---{---{---{---{---{---{---{---{---{---{---

function alertBatch()

{

var args=alertBatch.arguments;

var arr=[];

for(var i=0;i<args.length;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的参考书都有说明。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有