| 717 | } |
| 718 | |
| 719 | function extend( a, b, undefOnly ) { |
| 720 | for ( var prop in b ) { |
| 721 | if ( hasOwn.call( b, prop ) ) { |
| 722 | |
| 723 | // Avoid "Member not found" error in IE8 caused by messing with window.constructor |
| 724 | if ( !( prop === "constructor" && a === window ) ) { |
| 725 | if ( b[ prop ] === undefined ) { |
| 726 | delete a[ prop ]; |
| 727 | } else if ( !( undefOnly && typeof a[ prop ] !== "undefined" ) ) { |
| 728 | a[ prop ] = b[ prop ]; |
| 729 | } |
| 730 | } |
| 731 | } |
| 732 | } |
| 733 | |
| 734 | return a; |
| 735 | } |
| 736 | |
| 737 | function runLoggingCallbacks( key, args ) { |
| 738 | var i, l, callbacks; |