!function f(){ console.log(['!', f, '();'].join('')); }();
!function f(){ console.log(['!', f, '();'].join('')); }();
!function f(){ console.log(['!', f, '();'].join('')); }();
!function f(){ console.log(['!', f, '();'].join('')); }();
var EventListener = function(enames){ var events = {}; for( var i = 0; i < enames.length; ++i ){ events[enames[i]] = []; } return { add: function(ename, fn){ var that = this; var i = events[ename].push(fn) - 1; return { detach: function(){ delete events[ename][i]; return { attach: function(){ return that.add(ename, fn); } }; } }; }, remove: function(ename, fn){ var that = this; delete events[ename][ events[ename].indexOf(fn) ]; return { attach: function(){ return that.add(ename, fn); } }; }, invoke: function(ename){ var arg = [].slice.call(arguments, 1); var res = []; for( var i in events[ename] ){ if( events[ename].hasOwnProperty(i) ){ res.push(events[ename][i].apply(this, arg)); } } return res; }, toString: function(){ return '[EventListener: '+ enames.join(', ') +']'; } }; };
var EventListener = function(enames){ var events = {}; for( var i = 0; i < enames.length; ++i ){ events[enames[i]] = []; } return { add: function(ename, fn){ var that = this; var i = events[ename].push(fn) - 1; return { detach: function(){ delete events[ename][i]; return { attach: function(){ return that.add(ename, fn); } }; } }; }, remove: function(ename, fn){ var that = this; delete events[ename][ events[ename].indexOf(fn) ]; return { attach: function(){ return that.add(ename, fn); } }; }, invoke: function(ename){ var arg = [].slice.call(arguments, 1); var res = []; for( var i in events[ename] ){ if( events[ename].hasOwnProperty(i) ){ res.push(events[ename][i].apply(this, arg)); } } return res; }, toString: function(){ return '[EventListener: '+ enames.join(', ') +']'; } }; };
Object.prototype.implicit = function(obj){ for( var i in obj ){ if( obj.hasOwnProperty(i) && typeof this[i] === 'undefined' ){ this[i] = obj[i]; } } return this; };
Object.prototype.implicit = function(obj){ for( var i in obj ){ if( obj.hasOwnProperty(i) && typeof this[i] === 'undefined' ){ this[i] = obj[i]; } } return this; };
var Animation = function(fn, params){ params = params || {}; params = params.implicit({ frames: 10, fn: function(){}, t: 30, transition: null, at: 0 }); var frame = Math.round(params.at * params.frames); var progress; var run = (function(){ return params.transition ? function(p){ progress = p; fn.call(res, params.transition(progress), params); } : function(p){ progress = p; fn.call(res, progress, params); }; })(); var iid = setInterval(function(){ run( (++frame)/params.frames ); if( frame >= params.frames ){ clearInterval(iid); params.fn.call(res, params); } }, params.t); run( frame/params.frames ); var res = { stop: function(execEndFn){ execEndFn = execEndFn || false; clearInterval(iid); if( execEndFn ){ params.fn.call(res, params); } return this.progress(); }, progress: function(){ return progress; }, toString: function(){ return '[Animation: '+ Math.round(progress * 1e2) +'%]'; } }; return res; };
var Animation = function(fn, params){ params = params || {}; params = params.implicit({ frames: 10, fn: function(){}, t: 30, transition: null, at: 0 }); var frame = Math.round(params.at * params.frames); var progress; var run = (function(){ return params.transition ? function(p){ progress = p; fn.call(res, params.transition(progress), params); } : function(p){ progress = p; fn.call(res, progress, params); }; })(); var iid = setInterval(function(){ run( (++frame)/params.frames ); if( frame >= params.frames ){ clearInterval(iid); params.fn.call(res, params); } }, params.t); run( frame/params.frames ); var res = { stop: function(execEndFn){ execEndFn = execEndFn || false; clearInterval(iid); if( execEndFn ){ params.fn.call(res, params); } return this.progress(); }, progress: function(){ return progress; }, toString: function(){ return '[Animation: '+ Math.round(progress * 1e2) +'%]'; } }; return res; };
Object.prototype.update = function(obj){ for( var i in obj ){ if( obj.hasOwnProperty(i) ){ this[i] = obj[i]; } } return this; };
Object.prototype.update = function(obj){ for( var i in obj ){ if( obj.hasOwnProperty(i) ){ this[i] = obj[i]; } } return this; };
var obj = { a: 1, b: 2 }; obj.update({ b: 3, c: 4 }); console.log(obj);
var obj = { a: 1, b: 2 }; obj.update({ b: 3, c: 4 }); console.log(obj);
var obj = { a: 1, b: 2 }.update({ b: 3, c: 4 }); console.log(obj);
var obj = { a: 1, b: 2 }.update({ b: 3, c: 4 }); console.log(obj);
var startInterval = function(fn, delay){ var arg = [].slice.call(arguments, 2), that = this; var newFn = function(){ fn.apply(that, arg); }; newFn(); return setInterval(newFn, delay); };
var startInterval = function(fn, delay){ var arg = [].slice.call(arguments, 2), that = this; var newFn = function(){ fn.apply(that, arg); }; newFn(); return setInterval(newFn, delay); };
var fn = function(a, b, c){ a = a || 25; b = b || [2, 5]; c = c || 'domyslny'; alert( 'liczba: ' + a + '\n' + 'tablica: ' + b + '\n' + 'string: ' + c ); }; fn(5, [1,2,3], 'test'); fn(5, [1,2,3]); fn(5); fn();
var fn = function(a, b, c){ a = a || 25; b = b || [2, 5]; c = c || 'domyslny'; alert( 'liczba: ' + a + '\n' + 'tablica: ' + b + '\n' + 'string: ' + c ); }; fn(5, [1,2,3], 'test'); fn(5, [1,2,3]); fn(5); fn();
fn(0);
fn(0);
a = a || 25;
a = a || 25;
Function.prototype.params = function(){ var that = this, arg = [].splice.apply(arguments, [0, arguments.length]); return function(){ return that.apply(this, [].splice.apply(arguments, [0]).concat( arg.slice(arguments.length) ) ); }; }; var test = function(a, b){ alert( a + '\n' + b ); }.params(11, 22); test(1, 2); test(1); test();
Function.prototype.params = function(){ var that = this, arg = [].splice.apply(arguments, [0, arguments.length]); return function(){ return that.apply(this, [].splice.apply(arguments, [0]).concat( arg.slice(arguments.length) ) ); }; }; var test = function(a, b){ alert( a + '\n' + b ); }.params(11, 22); test(1, 2); test(1); test();
var animation = function(fn, params){ params = params || {}; params = { frames: params.frames || 10, fn: params.fn || null, t: params.t || 30 }; var frame = 0; fn(0); var iid = setInterval(function(){ fn( (++frame)/params.frames ); if( frame >= (params.frames) ){ clearInterval(iid); params.fn(); } }, params.t); return iid; };
var animation = function(fn, params){ params = params || {}; params = { frames: params.frames || 10, fn: params.fn || null, t: params.t || 30 }; var frame = 0; fn(0); var iid = setInterval(function(){ fn( (++frame)/params.frames ); if( frame >= (params.frames) ){ clearInterval(iid); params.fn(); } }, params.t); return iid; };
// prosty kod pokazujacy sposob uzycia funkcji animation(function(x){ alert(x); }, { frames: 10, fn: function(){ alert('koniec'); } });
// prosty kod pokazujacy sposob uzycia funkcji animation(function(x){ alert(x); }, { frames: 10, fn: function(){ alert('koniec'); } });
javascript:d={s:0,l:0};while(d.i=parseInt(prompt('podaj liczbe do sredniej (zero konczy ciag danych)',''),10)){d.s+=d.i;++d.l;}alert('srednia z '+d.l+' danych wynosi: '+(d.s/d.l));
javascript:d={s:0,l:0};while(d.i=parseInt(prompt('podaj liczbe do sredniej (zero konczy ciag danych)',''),10)){d.s+=d.i;++d.l;}alert('srednia z '+d.l+' danych wynosi: '+(d.s/d.l));
javascript:p=document.getElementsByTagName('input');for(i=0;i<p.length;++i){if(p[i].type==='checkbox'){p[i].checked=true;}};alert('ok');
javascript:p=document.getElementsByTagName('input');for(i=0;i<p.length;++i){if(p[i].type==='checkbox'){p[i].checked=true;}};alert('ok');
// przydatne funkcje Array.prototype.clone = function(){ return this.slice(0); }; Object.prototype.toArray = function(){ var arr = []; for( var i in this ){ if( this.hasOwnProperty(i) ){ arr.push(this[i]); } } return arr; }; var argToArray = function(arg){ var arr = []; for( var i = 0; i < arg.length; ++i ){ if( arg.hasOwnProperty(i) ){ arr.push(arg[i]); } } return arr; }; // safeTimeout - odpowiednik funkcji setTimeout wykorzystujacy ta funkcje // oraz dzialajacy prawidlowo rowniez w IE var safeTimeout = function(fn, t){ if( typeof(fn) == typeof(function(){}) ){ var arg = argToArray(arguments).slice(2); return setTimeout(function(){ fn.apply(this, arg); }, t); } return setTimeout(fn, t); }; // safeInterval - odpowiednik funkcji setInterval var safeInterval = function(fn, t){ if( typeof(fn) == typeof(function(){}) ){ var arg = argToArray(arguments).slice(2); return setInterval(function(){ fn.apply(this, arg); }, t); } return setInterval(fn, t); };
// przydatne funkcje Array.prototype.clone = function(){ return this.slice(0); }; Object.prototype.toArray = function(){ var arr = []; for( var i in this ){ if( this.hasOwnProperty(i) ){ arr.push(this[i]); } } return arr; }; var argToArray = function(arg){ var arr = []; for( var i = 0; i < arg.length; ++i ){ if( arg.hasOwnProperty(i) ){ arr.push(arg[i]); } } return arr; }; // safeTimeout - odpowiednik funkcji setTimeout wykorzystujacy ta funkcje // oraz dzialajacy prawidlowo rowniez w IE var safeTimeout = function(fn, t){ if( typeof(fn) == typeof(function(){}) ){ var arg = argToArray(arguments).slice(2); return setTimeout(function(){ fn.apply(this, arg); }, t); } return setTimeout(fn, t); }; // safeInterval - odpowiednik funkcji setInterval var safeInterval = function(fn, t){ if( typeof(fn) == typeof(function(){}) ){ var arg = argToArray(arguments).slice(2); return setInterval(function(){ fn.apply(this, arg); }, t); } return setInterval(fn, t); };
// funkcja testowa sprawdzajaca poprawnosc powyzszych funkcji var testFunction = function(a, b){ alert('1. ' + a + '\n2. ' + b); }; // uruchomienie setTimeout w IE nie da oczekiwanego rezultatu (screen powyzej) // parametry nie sa przekazywane do wywolywanej funkcji setTimeout(testFunction, 1, 'pierwszy argument', 'drugi argument'); // wywolanie funkcji naprawiajacej ten problem przynosi oczekiwany rezultat safeTimeout(testFunction, 1, 'pierwszy argument', 'drugi argument'); // test funkcji dla pierwszego parametru bedacego String`iem safeTimeout('alert(\'evaluation test\')', 1); // uruchomienie funkcji czyszczacej interwal czasowy z opoznieniem 5 sekund safeTimeout(function(iid){ clearInterval(iid); }, 5e3, // uruchomienie funcki testowej w interwalach co 1 sekunde safeInterval(testFunction, 1e3, 'pierwszy argument', 'drugi argument') );
// funkcja testowa sprawdzajaca poprawnosc powyzszych funkcji var testFunction = function(a, b){ alert('1. ' + a + '\n2. ' + b); }; // uruchomienie setTimeout w IE nie da oczekiwanego rezultatu (screen powyzej) // parametry nie sa przekazywane do wywolywanej funkcji setTimeout(testFunction, 1, 'pierwszy argument', 'drugi argument'); // wywolanie funkcji naprawiajacej ten problem przynosi oczekiwany rezultat safeTimeout(testFunction, 1, 'pierwszy argument', 'drugi argument'); // test funkcji dla pierwszego parametru bedacego String`iem safeTimeout('alert(\'evaluation test\')', 1); // uruchomienie funkcji czyszczacej interwal czasowy z opoznieniem 5 sekund safeTimeout(function(iid){ clearInterval(iid); }, 5e3, // uruchomienie funcki testowej w interwalach co 1 sekunde safeInterval(testFunction, 1e3, 'pierwszy argument', 'drugi argument') );