注册 登录
编程论坛 JavaScript论坛

typeof window.onload=="function" onload是属性还是函数,虽然明显是函数

richthoffen 发布于 2016-05-07 22:44, 5060 次点击
typeof window.onload=="function" JavaScript
onload是属性还是函数,虽然明显是函数,.onload没带()总觉得是属性,但不知道怎么理解,希望能有正确解释和引用资料
5 回复
#2
sldtk12016-05-08 09:16
这是一个事件,引用了一个匿名函数。也可以写成
window.onload = yourfunctionname;
yourfunctionname(){//code here}
#3
邱小小2016-05-09 09:44
回复 楼主 richthoffen
  1
#4
jsRank2016-05-10 15:01
很显然,onload是window的属性。

window是一个对象,对象里面只有属性(自身属性以及从原型继承来的属性)。window里面属性的值的类型是各种各样的,type of只是判断属性值的类型。
window对象的结构应该是这样的:
window={
    document:属性值类型(typeof ->object),
    length:属性值类型(typeof ->number),
    name:属性值类型(typeof ->string),
    ......
    onload:function(){alert('123')}属性值类型(typeof ->function)
}
因为onload的类型是function类型,当你调用onload属性时,window.onload的值是一个函数的引用,此时不会弹出对话框,当你需要执行window.onload这个函数内部的代码时,就需要加(),window.onload(),就会弹出对话框123了
#5
richthoffen2016-05-11 12:26
回复 4楼 jsRank
http://www.在window对象里没看到.onload
想问下你有没有这个问题的参考资料,总是找不到比较全的手册,w3c school也不是很全,向你请教了谢谢
var Existonload=window.onload;  window.onload在这里是传递函数引用吗,在=两边会不有区别
window.onload=efunc;
#6
jsRank2016-05-11 13:45
window的属性多了,w3cschool不可能全部列出来,更何况不同的浏览器window里面的属性也是不一样的,
可以使用以下代码打印出来:
    for(var key in window){
        console.log(key);
    }
在浏览器控制台可以看到window的属性列表。
这会把window的可枚举属性全部打印出来,包括自身属性和继承属性
1