关于addLoadEvent
只是作者没写而已,也算不上错误。一定要猜的话,也许var赋值本来在else子句里,后来才被挪出去的。
■网友
目前只能想到onload有getter setter 的情况下才会发生oldonload 和 window.onload 不一样。 \u0026#39;use strict\u0026#39;;var onloadHandler;var window = { get onload() { var existingHandler = onloadHandler; onloadHandler = undefined; return existingHandler; }, set onload(onload) { onloadHandler = onload; }};window.onload = function () {};var oldonload = window.onload;console.log(typeof oldonload);console.log(typeof window.onload);
■网友
是为了易读,好理解
■网友
强行解释的话。先分析addLoadEvent的功能,是为了添加新的响应函数。先var了一个局部的oldonload用来保存初始的window.onload响应函数(的指针)。所以做判断的化就判断原有的window.onload是不是已经绑了响应函数了。1.绑了就做else里的,把原有的onload的响应函数(保存在了oldonload里)和新传进来的func都添加进window.onload。2.还没有绑,就把刚传进来的func绑到window.onload因为要判断的其实是window.onload所以就写这个了,其实我觉得if里还不如写oldonload呢,window.onload还要再去window里找一下
■网友
看到这个我就知道你在看《javascript dom编程艺术》滑稽脸(?????)っ我觉得这个其实无所谓啦,这里你写oldonload和window.onload都一样的function addLoadEvent(func){ //共享onload事件\tvar oldonload=window.onload;\tif(typeof oldonload!="function"){\t\twindow.onload=func;\t}else{\t\twindow.onload=function(){\t\t\toldonload();\t\t\tfunc();\t\t}\t}}你写成上面的这样是没有问题的
■网友
兴许就是失误呗,作者也是人,有什么好奇怪的
■网友
我觉得主要是为了区分,否则else语句容易把人搞糊涂。else{oldonload=function(){oldonload();func();}}Ps:我是大菜鸟,才学了三四个月,个人看法,不确定是否准确
■网友
可能作者潜意识里认为oldonload是一个函数
推荐阅读
- 过节■江苏省委省政府办公厅下发关于做好2021年元旦春节期间有关工作的通知
- |徐州市出台《关于优化创新创业生态系统 提升区域科技创新活力的实施意见》及实施细则
- 雨下|全球关于禁售燃油车只是理论上可行吗
- 关于用phpfsocket 写Post, 模拟http 报文怎样写入要传输的处理数据
- 为啥网上那么多诈骗的都没人管
- 智叔|很多家长还在整箱买:谈谈关于牛奶的17个真相警惕这些列入黑名单的“假牛奶”
- 关于微信小程序的思考:运营者该何去何从
- 关于人工智能虚拟人的一些问题
- 知乎上关于人生经验的介绍是否可能对青少年造成潜在危害
- 车评社Auto|车评社|吉利星瑞“千人交车”,只是一个开始!
