A JavaScript Fancier

伟大的javascript技术研究中...

  IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  304 随笔 :: 0 文章 :: 479 评论 :: 0 Trackbacks


以前总感觉有些问题,但一直不知道到底是怎么回事,现在终于明白了,原来将一个函数赋给一个对象的属性或方法分两种情况:

1,如果函数没有参数,可以直接将名字赋给其属性或方法。
如document.onmouseover=doIt;//注意doIt不要带括号
这样赋值的实质是将后面函数的内容赋给前面对象属性或方法,等该属性或方法执行时执行后面函数的内容。
但是如果用document.onmouseover=doIt(id);将会出现问题,实质上并没有赋给document.onmouseover,js在解析此行时直接执行了doIt(id)函数,然后将doIt(id)的执行结果赋给document.onmouseover。
又如window.onload=getStart(id);并不会等页面加载完成后才执行getStart函数,而是网页加载到这行代码时就立即执行了getStart,然后将返回结果赋给window.onload。

2,如果要将带有参数的函数赋给其属性或方法则应该用function(){}包含起来。
如:
document.onmouseover=function(){doIt(id)};
window.onload=function(){getStart()};
这样就能将getStart的内容传给前面的对象属性了。

posted on 2007-01-26 00:44 Yemoo'S JS Blog 阅读(3783) 评论(19)  编辑 收藏 引用 所属分类: javascript语法基础

评论

# re: 将函数赋值给一个对象的属性或方法的一个小问题 2007-01-26 23:04 调研报告
看了  回复  更多评论
  

# re: 将函数赋值给一个对象的属性或方法的一个小问题 2007-09-06 10:27 shi
不错,顶一个  回复  更多评论
  

# re: 将函数赋值给一个对象的属性或方法的一个小问题[未登录] 2008-04-11 02:55 bruce
函数名就是引用,赋值函数名给某个事件就是传递函数引用,这样,都是引用同一个函数--事件处理程序。

加上()就是调用函数。

----------我的理解  回复  更多评论
  

# re: 将函数赋值给一个对象的属性或方法的一个小问题 2008-12-12 14:11 haitao
var funlist=new Array();

funlist[0]=function funA(x) { ... };
funlist[1]=function funB(x) { ... };
funlist[2]=function funC(x) { ... };
...

for (var x=1; x<10; x++)
for (var i=0; i<3; i++)
funlist[i](x);

好像不行
如果funA/B/C函数是无参数的,就可以
  回复  更多评论
  

# re: 将函数赋值给一个对象的属性或方法的一个小问题 2008-12-12 14:36 haitao
哦,好像是不能这样:funlist[0]=function funA(x) { ... };
而要这样:funlist[0]=function (x) { ... };

但是刚才试验的过程中,实际是:
function funA() { ... }
funlist[0]=funA;
可以;
为funA增加参数后,
function funA(x) { ... }
funlist[0]=funA;
就没有任何结果了!

然后还好像出现跨js块后变量无效!
<SCRIPT language=JavaScript>
<!--
var p=1;
//-->
</SCRIPT>

<SCRIPT language=JavaScript>
<!--
alert(p); //被报错:p无效!
//-->
</SCRIPT>


js出的问题,总是神出鬼没,又不好确定。。。。。。  回复  更多评论
  

# re: 将函数赋值给一个对象的属性或方法的一个小问题 2010-07-03 11:18 LuannPruitt32
A lot of specialists state that <a href="http://lowest-rate-loans.com/topics/home-loans">home loans</a> help people to live their own way, because they are able to feel free to buy needed stuff. Furthermore, some banks present collateral loan for different persons.   回复  更多评论
  

# re: 将函数赋值给一个对象的属性或方法的一个小问题 2011-10-02 14:44 article submission services
Worry just about PR? Are willing your website to be more successful? So, you surely need to turn to article submission service. Seo options is a must for internet sites!   回复  更多评论
  

# re: 将函数赋值给一个对象的属性或方法的一个小问题 2011-10-02 15:32 dissertation writing service
Whatever path you decide concerning, there is every time someone to tell you that you are wrong. There are every time difficulties nascenting which lure you to consider that your critics are right. But our service will help you at any time to write your thesis. I recommend youthesis writing that will assist you in your students life. We will assist you to arise and become a prosperous classman!  回复  更多评论
  

只有注册用户登录后才能发表评论。