@@ -526,6 +526,51 @@ var renderFriendList = timeChunk(array,function(n){
526
526
527
527
renderFriendList ( ) ;
528
528
529
+ //惰性加载函数
530
+ //函数缺点没吃调用都会执行if 条件分支,开销较大
531
+ var addEvent = function ( elem , type , handler ) {
532
+ if ( window . addEventListener ) {
533
+ return elem . addEventListener ( type , handler , false ) ;
534
+ }
535
+ if ( window . attachEvent ) {
536
+ return elem . attachEvent ( 'on' + type , handler )
537
+ }
538
+ }
539
+
540
+ //嗅探浏览器的操作提前到代码加载的时候,在代码加载的时候就立刻进行一次判断
541
+ //缺点 从头到尾都没有使用过 addEvent 函数,这样看
542
+ // 来,前一次的浏览器嗅探就是完全多余的操作,而且这也会稍稍延长页面 ready 的时间
543
+ var addEvent = ( function ( ) {
544
+ if ( window . addEventListener ) {
545
+ return function ( elem , type , handler ) {
546
+ elem . addEventListener ( type , handler , false ) ;
547
+ }
548
+ }
549
+ if ( window . attachEvent ) {
550
+ return function ( elem , type , handler ) {
551
+ elem . attachEvent ( 'on' + type , handler )
552
+ }
553
+ }
529
554
555
+ } ) ( )
556
+
557
+ //惰性函数
558
+ var addEvent = function ( elem , type , handler ) {
559
+ if ( window . addEventListener ) {
560
+ //重写 addEvent
561
+ addEvent = function ( elem , type , handler ) {
562
+ elem . addEventListener ( type , handler , false )
563
+ }
564
+ } else if ( window . attachEvent ) {
565
+ addEvent = function ( elem , type , handler ) {
566
+ elem . addEventListener ( 'on' + type , handler ) ;
567
+ }
568
+ }
569
+
570
+ addEvent ( elem , type , handler )
571
+ }
530
572
573
+ var div = document . getElementById ( 'div1' )
574
+ addEvent ( div , 'click' , ( ) => { console . log ( 1 ) } )
575
+ addEvent ( div , 'click' , ( ) => { console . log ( 2 ) } )
531
576
0 commit comments