SlideShare ist ein Scribd-Unternehmen logo
1 von 18
Downloaden Sie, um offline zu lesen
netguru friday talks :)



       Modern JavaScript
       Jquery Framework,
      UnObtrusive Javascript
Scope, context

var str = 'str';          function myfunc3(){
                            str = 'str4';
                          }//str == str4
function myfunc1(){
   var str = 'str2';
} //str == str

function myfunc2(){
   window.str = 'str3';
}//str == str3
Datatyping

Element = new Array('asd' , 'asdasd');
if(typeof (element) == 'object') TRUE (!!!)
if(element.constructor == Object) FALSE
Public methods

//constructor
function myfunc(arg1, arg2){
  this.arg1 = arg1;
  this.arg2 = arg2;
}
myfunc.prototype.mymethod = function(){
  return this.arg1;
}
var instance1 = new myfunc('asd', 'asd2');
instance1.mymethod == 'asd'
Setters, getters

                                          var user = new
function User( properties ) {
for ( var i in properties ) {               User({k1:v1,
    (function(){                            k2:v2});
    this[ quot;getquot; + i ] = function() {
                                          user.setk1 = 10;
    return properties[i];
                                          user.getk1 // 10;
    };
    this[ quot;setquot; + i ] = function(val) {
    properties[i] = val;
    };
    })(); }
}
Call, Apply, Arguments

function colorize(color){
    this.style.color = color;
}
colorize.call($('#id')[0], 'white', arg2, arg3);
colorize.apply($('#id')[0], [])

function myfunc(arg1, arg2, arg3){
    if(arguments.length==3)
}
Closures

SetTimeout('function()', 1000);
SetTimeout('function('+par1+')', 1000);

setTimeout(function(){

}, 1000);
-----------------------------------------------
(function($){
// $ $ $
})(jQuery);
Closures (2)
function say667() {
 var num = 666;
 var sayAlert = function() { alert(num); }
 num++;
 return sayAlert;
} //667

function sayAlice() {
  var sayAlert = function() { alert(alice); }
  var alice = 'Hello Alice';
  return sayAlert;
}
Event Bubbling/Event Capturing
2 phases: capturing, bubbling

<div><p>.........</p></div>
$('div').click(function...); $('p').click(func...);

capturing: document->body->div->....->p
bubbling: p->....->div->body->document

$('p').bind('click', function(e){
      e.stopPropagation();
      // = (MSIE) window.event.cancelBubble = true
});
PreventDefault()

// ! alt / !title

$('img').mouseover(function(e){
      e.preventDefault();
      // MSIE: window.event.returnValue = false;
});
jQuery is cool :)

var every = document.getElementById(
  quot;everywherequot; );

every.parentNode.removeChild( every );

=

$('#everywhere').remove();
(Totally) Unobtrusive Javascript

OLD: <a onclick=””>

<div class=hasAjax””>
    <a class=”ajaxlink”></a>
    <p class=”ajaxgallery”></p>
</div>

myjavascript.js
if($('div.hasAjax').size()>0) {
    jQuery('a.ajaxlink').bind('click', function(){});
    jQuery('p.ajaxgallery').load('.....');
}
Method Chaining


$('.jakaKlasa').each(function(){
      $(this).bind('click', function(){});
      $(this).css();
});

vs.

$('.jakasKlasa').bind(...).css(...);
JS Objects + jQuery
var myProjectJS = {
   str : 'click the button',
   buttonize : function(what, css){
       var obj = this;
       var opts = opts || {color:'black'};
       var el = jQuery(what).each(function(){
            // ! this.str
            jQuery(this).text(obj.str).css(css);
            });
       },
   arr : []};
myProjectJS.buttonize('.button');
var buttonize = myProjectJS.buttonize();
buttonize('.otherbutton',{fontWeight:'bold'});
//YAHOO.util.Event.addListener()
Plugins

jQuery.fn.ourNewMethodName =
  function(params){
  defparams = {par1: '#id'}
  params = jQuery.extend(deparams, params);

  return this.each(function(){
        var ref = jQuery(this);
        /* */
  });
}
$('p').ourNewMethodName({par1:
  'val1'}).jQueryMethod();
Recomm'd plugins (1)

Metadata
<a class=”ajaxload {target: '#container'}”
  href=””>click</a>

jQuery('.ajaxload').click(function(e){
      e.preventDefault();
      var ref = jQuery(this);
      var data = ref.metadata();
      data.target.load( ref.attr('href') );
});
Recomm'd plugins (2)

JQModal (overlays, modals under control)

Form

UI (tablesorter, tabs, accordion)

LiveQuery (auto re-bind events)
THX




        Questions?

      www.google.com

            :)

Weitere ähnliche Inhalte

Was ist angesagt?

Angularjs 개인견해
Angularjs 개인견해Angularjs 개인견해
Angularjs 개인견해학섭 오
 
Java script.trend(spec)
Java script.trend(spec)Java script.trend(spec)
Java script.trend(spec)dynamis
 
Функциональное реактивное программирование
Функциональное реактивное программированиеФункциональное реактивное программирование
Функциональное реактивное программированиеDmitriy Kiriyenko
 
jQuery for designers
jQuery for designersjQuery for designers
jQuery for designersJohan Ronsse
 
Event loops in java script 01 - stack
Event loops in java script 01 - stackEvent loops in java script 01 - stack
Event loops in java script 01 - stackVishnu Padmanabhan
 
Шаблоны проектирования 2
Шаблоны проектирования 2Шаблоны проектирования 2
Шаблоны проектирования 2Constantin Kichinsky
 
Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...
Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...
Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...Ontico
 
Collection pipeline par Mathieu Godart
Collection pipeline par  Mathieu GodartCollection pipeline par  Mathieu Godart
Collection pipeline par Mathieu GodartCocoaHeads France
 
Java Script - Object-Oriented Programming
Java Script - Object-Oriented ProgrammingJava Script - Object-Oriented Programming
Java Script - Object-Oriented Programmingintive
 
exercise of basic computer programming.docx
exercise of basic computer programming.docxexercise of basic computer programming.docx
exercise of basic computer programming.docxmiftah88
 
4.2. trasformers-filters-y-adapters
4.2. trasformers-filters-y-adapters4.2. trasformers-filters-y-adapters
4.2. trasformers-filters-y-adaptersxavazque2
 
EJEMPLOS DESARROLLADOS
EJEMPLOS DESARROLLADOSEJEMPLOS DESARROLLADOS
EJEMPLOS DESARROLLADOSDarwin Durand
 
Yohan jacobi gaussseidel_analisis
Yohan jacobi gaussseidel_analisisYohan jacobi gaussseidel_analisis
Yohan jacobi gaussseidel_analisisYohan Sidik
 
ECMAScript 6 im Produktivbetrieb
ECMAScript 6 im ProduktivbetriebECMAScript 6 im Produktivbetrieb
ECMAScript 6 im ProduktivbetriebSebastian Springer
 

Was ist angesagt? (20)

Custom agario skins
Custom agario skinsCustom agario skins
Custom agario skins
 
Angularjs 개인견해
Angularjs 개인견해Angularjs 개인견해
Angularjs 개인견해
 
Lenguaje de programación
Lenguaje de programaciónLenguaje de programación
Lenguaje de programación
 
Lenguaje de programación
Lenguaje de programaciónLenguaje de programación
Lenguaje de programación
 
Java script.trend(spec)
Java script.trend(spec)Java script.trend(spec)
Java script.trend(spec)
 
Функциональное реактивное программирование
Функциональное реактивное программированиеФункциональное реактивное программирование
Функциональное реактивное программирование
 
jQuery for designers
jQuery for designersjQuery for designers
jQuery for designers
 
Proyecto Final Android-SQLite
Proyecto Final Android-SQLiteProyecto Final Android-SQLite
Proyecto Final Android-SQLite
 
Event loops in java script 01 - stack
Event loops in java script 01 - stackEvent loops in java script 01 - stack
Event loops in java script 01 - stack
 
Dwr实战
Dwr实战Dwr实战
Dwr实战
 
Шаблоны проектирования 2
Шаблоны проектирования 2Шаблоны проектирования 2
Шаблоны проектирования 2
 
Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...
Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...
Angular 2 не так уж и плох... А если задуматься, то и просто хорош / Алексей ...
 
Collection pipeline par Mathieu Godart
Collection pipeline par  Mathieu GodartCollection pipeline par  Mathieu Godart
Collection pipeline par Mathieu Godart
 
Java Script - Object-Oriented Programming
Java Script - Object-Oriented ProgrammingJava Script - Object-Oriented Programming
Java Script - Object-Oriented Programming
 
exercise of basic computer programming.docx
exercise of basic computer programming.docxexercise of basic computer programming.docx
exercise of basic computer programming.docx
 
4.2. trasformers-filters-y-adapters
4.2. trasformers-filters-y-adapters4.2. trasformers-filters-y-adapters
4.2. trasformers-filters-y-adapters
 
JQuery
JQueryJQuery
JQuery
 
EJEMPLOS DESARROLLADOS
EJEMPLOS DESARROLLADOSEJEMPLOS DESARROLLADOS
EJEMPLOS DESARROLLADOS
 
Yohan jacobi gaussseidel_analisis
Yohan jacobi gaussseidel_analisisYohan jacobi gaussseidel_analisis
Yohan jacobi gaussseidel_analisis
 
ECMAScript 6 im Produktivbetrieb
ECMAScript 6 im ProduktivbetriebECMAScript 6 im Produktivbetrieb
ECMAScript 6 im Produktivbetrieb
 

modern javascript, unobtrusive javascript, jquery

  • 1. netguru friday talks :) Modern JavaScript Jquery Framework, UnObtrusive Javascript
  • 2. Scope, context var str = 'str'; function myfunc3(){ str = 'str4'; }//str == str4 function myfunc1(){ var str = 'str2'; } //str == str function myfunc2(){ window.str = 'str3'; }//str == str3
  • 3. Datatyping Element = new Array('asd' , 'asdasd'); if(typeof (element) == 'object') TRUE (!!!) if(element.constructor == Object) FALSE
  • 4. Public methods //constructor function myfunc(arg1, arg2){ this.arg1 = arg1; this.arg2 = arg2; } myfunc.prototype.mymethod = function(){ return this.arg1; } var instance1 = new myfunc('asd', 'asd2'); instance1.mymethod == 'asd'
  • 5. Setters, getters var user = new function User( properties ) { for ( var i in properties ) { User({k1:v1, (function(){ k2:v2}); this[ quot;getquot; + i ] = function() { user.setk1 = 10; return properties[i]; user.getk1 // 10; }; this[ quot;setquot; + i ] = function(val) { properties[i] = val; }; })(); } }
  • 6. Call, Apply, Arguments function colorize(color){ this.style.color = color; } colorize.call($('#id')[0], 'white', arg2, arg3); colorize.apply($('#id')[0], []) function myfunc(arg1, arg2, arg3){ if(arguments.length==3) }
  • 7. Closures SetTimeout('function()', 1000); SetTimeout('function('+par1+')', 1000); setTimeout(function(){ }, 1000); ----------------------------------------------- (function($){ // $ $ $ })(jQuery);
  • 8. Closures (2) function say667() { var num = 666; var sayAlert = function() { alert(num); } num++; return sayAlert; } //667 function sayAlice() { var sayAlert = function() { alert(alice); } var alice = 'Hello Alice'; return sayAlert; }
  • 9. Event Bubbling/Event Capturing 2 phases: capturing, bubbling <div><p>.........</p></div> $('div').click(function...); $('p').click(func...); capturing: document->body->div->....->p bubbling: p->....->div->body->document $('p').bind('click', function(e){ e.stopPropagation(); // = (MSIE) window.event.cancelBubble = true });
  • 10. PreventDefault() // ! alt / !title $('img').mouseover(function(e){ e.preventDefault(); // MSIE: window.event.returnValue = false; });
  • 11. jQuery is cool :) var every = document.getElementById( quot;everywherequot; ); every.parentNode.removeChild( every ); = $('#everywhere').remove();
  • 12. (Totally) Unobtrusive Javascript OLD: <a onclick=””> <div class=hasAjax””> <a class=”ajaxlink”></a> <p class=”ajaxgallery”></p> </div> myjavascript.js if($('div.hasAjax').size()>0) { jQuery('a.ajaxlink').bind('click', function(){}); jQuery('p.ajaxgallery').load('.....'); }
  • 13. Method Chaining $('.jakaKlasa').each(function(){ $(this).bind('click', function(){}); $(this).css(); }); vs. $('.jakasKlasa').bind(...).css(...);
  • 14. JS Objects + jQuery var myProjectJS = { str : 'click the button', buttonize : function(what, css){ var obj = this; var opts = opts || {color:'black'}; var el = jQuery(what).each(function(){ // ! this.str jQuery(this).text(obj.str).css(css); }); }, arr : []}; myProjectJS.buttonize('.button'); var buttonize = myProjectJS.buttonize(); buttonize('.otherbutton',{fontWeight:'bold'}); //YAHOO.util.Event.addListener()
  • 15. Plugins jQuery.fn.ourNewMethodName = function(params){ defparams = {par1: '#id'} params = jQuery.extend(deparams, params); return this.each(function(){ var ref = jQuery(this); /* */ }); } $('p').ourNewMethodName({par1: 'val1'}).jQueryMethod();
  • 16. Recomm'd plugins (1) Metadata <a class=”ajaxload {target: '#container'}” href=””>click</a> jQuery('.ajaxload').click(function(e){ e.preventDefault(); var ref = jQuery(this); var data = ref.metadata(); data.target.load( ref.attr('href') ); });
  • 17. Recomm'd plugins (2) JQModal (overlays, modals under control) Form UI (tablesorter, tabs, accordion) LiveQuery (auto re-bind events)
  • 18. THX Questions? www.google.com :)