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