javascript的onload回调问题

JavaScript029

javascript的onload回调问题,第1张

1、 new Image()只是建立一个Image对象,在给src属性赋值之前,图像并没有加载到内存,所以是不会缓存图像的。

2、drawImage()是放在img的onload事件中执行的,也就是说它不是立即执行的,而是等待img的onload事件发生后(也就是img中的图像被加载到内存后)才执行的。这就好比埋地雷,埋完地雷后地雷是不会立刻爆炸的,埋地雷的人可以紧接着去做其他事(比如去其他地方继续埋雷),只有达到触发条件(比如敌人踩上去了)地雷才会爆炸。表面上埋地雷的动作是发生在前面的,但实际的运行结果(爆炸)却是发生在后面的。程序里也一样,表面上drawImage()是放在给src赋值之前,但它实际上是在src赋值之后才运行的。

3、img.onload严格来讲并不叫回调,而是一个事件过程,就是说当这个事件(onload)发生了,它里面的代码才会执行,而如果事件没发生,那么代码是不会主动运行的。事件过程是面向对象编程的一个主要的逻辑结构,比如说鼠标点击(onclick)就是一个很常用的事件,点了鼠标就执行某个操作,而不点鼠标的时候,代码即使放在那里它也不敢擅自运行的。

纵所周知苏德战场后期,双方的重型坦克对战就是虎式坦克与JS-2坦克的较量,但此论坛内很多人却对虎式坦克不屑一故,却对JS-2坦克推崇至极,我认为这是不对的,下面是我的看法。

虎式坦克使用的底盘有着有着很好的减震效果其采用交错排列的负重轮,宽履带加上每个力矩点所承受的重量减轻使得虎式坦克的平稳性远好于JS-2坦克(这就是为什么德军在持续作战上占优的原因)。而JS-2坦克全重达46吨,由于其扭杆悬挂装置的扭矩被限制的很小,扭杆强度明显不够,再加上JS-2坦克只有6对负重轮,每个却要承受8吨的重量,因此作战中JS-2坦克不能获得很好的防震作用,因此在持续作战上虎式坦克胜出。

虎式坦克装备着一门88毫米坦克炮具有很强火力,可在2000米外击穿30度倾角的110毫米钢板(最大贯穿度为273毫米100米之内),其装甲厚度也为110毫米。更可怕的是它每分钟3-4发的射数,这也就意味着如果虎式坦克与JS-2坦克同时发现对方除非JS-2一炮干掉虎,否则JS-2将是九死一生(JS-2的122毫米坦克炮射速仅为每分钟1-1.5发)。但JS-2的122毫米坦克炮也可在2000米外击穿30度倾角的125毫米钢板(近战能力更是可怕的吓人),其车体前下装甲为100毫米30度,车体前上装甲为120毫米60度角也可谓十分强大,但由于其铸造式炮塔加工工艺的不稳,铸造钢铁特别在战时极易产生气泡,而导致许多理论上不能被击穿的坦克被击毁(甚至有一次,一名德军反坦克兵用手榴弹击毁了一辆JS-2坦克,最初我也觉得不可信,但我也在很多文章内找到了这个事列)。所以双方如果在1000米内直接对抗,虎式坦克与JS-2坦克均可击穿对方主装甲,因此在火力和防护上双方打个平手。

虎式坦克用于奇袭和牵制效果极好如在法国一辆孤零零的虎式坦克居然牵制了盟军1个师的行动,当盟军将它击毁时才发现自己已损失了25辆坦克,而JS-2坦克由于底盘不稳受不起颠簸,奇袭和牵制效果自然比不上虎式坦克。

此外,二战中70%的坦克是死于反坦克兵和地雷之手,虎式坦克全身为焊接装甲,且其反步兵机枪十分强大,而JS-2坦克其观察口却成为了最大的漏洞(战后统计约有75%的战损JS-2坦克死于德军铁拳或其他反坦克装备之手)。因此在与反坦克兵对抗中虎式坦克优于JS-2坦克。

在生产能力上,一辆虎式坦克为25万工时,而一辆JS-2坦克为5万工时,因此在数量优势上JS-2坦克取胜。

总之我认为虎式坦克与JS-2坦克处于同一水平线上,虎式坦克甚至在对抗中略显优势,因此虎式坦克的输是输在了数量上(1945年虎式坦克共生产了近1200辆,而JS-2坦克却生产了近3000辆)。

结论:虎式坦克与JS-2坦克处于伯仲之间