SlideShare a Scribd company logo
1 of 24
JavaScript
                       Márius Šajgalík




Rubyslava 21.2.2013       Márius Šajgalík   1
Ako vytvoriť objekt
var o1 = { };
var o2 = new Object();
var o3 = { write: function(a) { console.log(a); } };
o3.write(1);




Rubyslava 21.2.2013   Márius Šajgalík                  2
Ako vytvoriť objekt
function O4(){
     this.write = function(a) { console.log(a); };
}
var O5 = function() {
     this.write = function(a) { console.log(a); };
};
var o4 = new O4();
o4.write(1);

Rubyslava 21.2.2013   Márius Šajgalík                3
Ako vytvoriť objekt
function Robot(_params) {
     var rotor; // private
     this.name; // public
     function init(params) {
          ... // compute _rotor from params
          rotor = _rotor;
     }
     init(_params);
}

Rubyslava 21.2.2013    Márius Šajgalík        4
Lokálne premenné
function F1() {
     var x = 2; // poznáme iba vnútri F1
     this.write = function() { console.log(x); };
}
var f1 = new F1();
f1.write();
f1.set = function(x2) { x = x2; }; // nové globálne x
f1.set(3);
f1.write(); // lokálne x nezmenené
console.log(x); // globálne x = 3
Rubyslava 21.2.2013     Márius Šajgalík                 5
this
function Robot(params){
     var name = params.name;
     this.getName = function() { return name; };
     this.getState = function() {
          ...
          return weather;
     };
     this.hasUmbrella = function() {
          var state = ??? // this.getState is undefined
     };
}
Rubyslava 21.2.2013     Márius Šajgalík                   6
this
function Robot(params){
     ...
     var This = this;
     ...
     this.hasUmbrella = function() {
          var state = This.getState();
          if (state.rain) return true;
          else return false;
     };
}
Rubyslava 21.2.2013     Márius Šajgalík   7
Ako zmeniť this?
function predstavSa(meno) {
     console.log('Ahoj, som ' + this +
                 ' a moje meno je ' + meno);
}

predstavSa.call('robot', 'Wall-E');
predstavSa.apply('robot', ['Wall-E']);
Array.prototype.slice.call('Wall-E', 2, 5)

Rubyslava 21.2.2013   Márius Šajgalík          8
Slovník
var slovnik = { };
slovnik['apple'] = 'jablko';
slovnik["o'clock"] = 'hodín';

slovnik['apple']; // 'jablko'
slovnik['jablko']; // undefined
slovnik['constructor']; // function


Rubyslava 21.2.2013   Márius Šajgalík   9
Slovník
function _slovnik() {
      var slovnik = { };
      this.get = function(word) {
            if (word == 'constructor') word = '_' + word;
            return slovnik[word];
      };
      this.set = function(word, translation) {
            if (word == 'constructor') word = '_' + word;
            slovnik[word] = translation;
      };
}
var slovnik = new _slovnik();


Rubyslava 21.2.2013         Márius Šajgalík                 10
Slovník
function _slovnik() {
     var slovnik = { };
     this.get = function(word) {
          return slovnik['_' + word];
     };
     this.set = function(word, translation) {
          slovnik['_' + word] = translation;
     };
}
var slovnik = new _slovnik();
Rubyslava 21.2.2013     Márius Šajgalík         11
Ako spraviť asynchrónne API
var API = { };
API.xhr = {
     get: function(params, callback) { ... }
     getJSON: function(params, callback) { ... }
     post: function(params, callback) { ... }
};




Rubyslava 21.2.2013   Márius Šajgalík              12
Ako spraviť asynchrónne API
var API = { };
API._db = function (database) {
     function init(params, callback) { ... };
     this.get = function(params, callback) { ... };
     this.set = function(params, callback) { ... };
     init({ 'db_name': database }, function(response) {
          if (response.error) console.error(response.cause);
     });
};
API.db = new API._db('my database');
Rubyslava 21.2.2013     Márius Šajgalík                13
Ako spraviť asynchrónne API
get: function(params, callback) {
     DB.get(params.table, params.key, function(value) {
          callback({ 'ok': true, 'value': value });
     }, function(error) {
          callback({ 'error': true, 'cause': error });
     });
}


Rubyslava 21.2.2013   Márius Šajgalík               14
Ako spraviť asynchrónne API
var API = { };
API.core = {
     getKeywords: function(params, callback) { ... }
};




Rubyslava 21.2.2013   Márius Šajgalík                  15
Variabilné parametre
getKeywords: function(params, callback) {
     if (!params.URL) params = { 'URL': params };
     if (!params.html) {
          API.xhr.get(params.URL,function(response) {
               params.html = response.html;
               This.getKeywords(params, callback);
          });
          return;
     }
}
Rubyslava 21.2.2013     Márius Šajgalík                 16
Variabilné parametre
getKeywords: function(params, callback) {
     ...
     if (!params.words) {
          params.words = tokenize(params.html);
     }
     ...
}


Rubyslava 21.2.2013    Márius Šajgalík            17
Variabilné parametre
getKeywords: function(params, callback) {
     if (params.words) {
          getKeywordsFromWords(params, callback);
          return;
     }
     if (params.html) {
          getKeywordsFromHtml(params, callback);
          return;
     }
     ...
}
Rubyslava 21.2.2013     Márius Šajgalík             18
Kopírovanie objektov – dedenie
inštancií?
var O = function () {
    this.write = function (a) { console.log(a); };
};
var o = new O();
o.write(1);
var p = Object.create(o);
p.write(1);
o.write2 = function (a) { console.log(a + 1); };
o.write2(1);
p.write2 = function (a) { console.log(a - 1); };
o.write2(1);
p.write2(1);


Rubyslava 21.2.2013         Márius Šajgalík          19
Ako písať zátvorky?
function areWeFinished()
{
     ...
}

function areWeFinished() {
     ...
}

Rubyslava 21.2.2013   Márius Šajgalík   20
Ako písať zátvorky?
function areWeFinished()
{
     return
     {
          'yes': true
     };
}


Rubyslava 21.2.2013   Márius Šajgalík   21
Ako písať zátvorky?
function areWeFinished()
{
     return ; // takto to interpretuje JavaScript
     {
          'yes': true
     };
}

areWeFinished(); // == undefined !!!

Rubyslava 21.2.2013   Márius Šajgalík               22
Ako písať zátvorky?
function areWeFinished() {
     return {
          'yes': true
     };
}




Rubyslava 21.2.2013   Márius Šajgalík   23
areWeFinished() == true




Rubyslava 21.2.2013          Márius Šajgalík    24

More Related Content

What's hot

HTML5を使ったウェブアプリケーションの高速化
HTML5を使ったウェブアプリケーションの高速化HTML5を使ったウェブアプリケーションの高速化
HTML5を使ったウェブアプリケーションの高速化hagino 3000
 
Responsive Webdesign
Responsive WebdesignResponsive Webdesign
Responsive Webdesignnikflip
 
Фатальный недостаток Node.js
Фатальный недостаток Node.jsФатальный недостаток Node.js
Фатальный недостаток Node.jsOleksii Okhrymenko
 
Сборка JavaScript-проектов с помощью Grunt
Сборка JavaScript-проектов с помощью GruntСборка JavaScript-проектов с помощью Grunt
Сборка JavaScript-проектов с помощью GruntFDConf
 
数式を構文解析した話
数式を構文解析した話数式を構文解析した話
数式を構文解析した話y1r96 Ueno
 
OpenResty/Lua 70+ Advanced Programming Skills and Optimization tips
OpenResty/Lua 70+ Advanced Programming Skills and Optimization tipsOpenResty/Lua 70+ Advanced Programming Skills and Optimization tips
OpenResty/Lua 70+ Advanced Programming Skills and Optimization tipsHo Kim
 
Invoke y como poner en marcha un entorno de trabajo
Invoke y como poner en marcha un entorno de trabajoInvoke y como poner en marcha un entorno de trabajo
Invoke y como poner en marcha un entorno de trabajoNaN-tic
 
Linklist through struct
Linklist through structLinklist through struct
Linklist through structIBRAR GUL
 
Collection pipeline par Mathieu Godart
Collection pipeline par  Mathieu GodartCollection pipeline par  Mathieu Godart
Collection pipeline par Mathieu GodartCocoaHeads France
 
Introduction to Service Worker
Introduction to Service WorkerIntroduction to Service Worker
Introduction to Service WorkerShogo Sensui
 
Week 7 unit3 (chapter 10-11)
Week 7   unit3 (chapter 10-11)Week 7   unit3 (chapter 10-11)
Week 7 unit3 (chapter 10-11)aj.mapling
 
C/C++とWebAssemblyを利用したライブラリ開発
C/C++とWebAssemblyを利用したライブラリ開発C/C++とWebAssemblyを利用したライブラリ開発
C/C++とWebAssemblyを利用したライブラリ開発祐司 伊藤
 
Docstringを書こう!
Docstringを書こう!Docstringを書こう!
Docstringを書こう!cocodrips
 
2014 it - app dev series - 03 - interagire con il database
2014   it - app dev series - 03 - interagire con il database2014   it - app dev series - 03 - interagire con il database
2014 it - app dev series - 03 - interagire con il databaseMongoDB
 
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017devCAT Studio, NEXON
 

What's hot (19)

Correcion
CorrecionCorrecion
Correcion
 
詳説WebAssembly
詳説WebAssembly詳説WebAssembly
詳説WebAssembly
 
HTML5を使ったウェブアプリケーションの高速化
HTML5を使ったウェブアプリケーションの高速化HTML5を使ったウェブアプリケーションの高速化
HTML5を使ったウェブアプリケーションの高速化
 
Responsive Webdesign
Responsive WebdesignResponsive Webdesign
Responsive Webdesign
 
Фатальный недостаток Node.js
Фатальный недостаток Node.jsФатальный недостаток Node.js
Фатальный недостаток Node.js
 
Discover ServiceWorker
Discover ServiceWorkerDiscover ServiceWorker
Discover ServiceWorker
 
Сборка JavaScript-проектов с помощью Grunt
Сборка JavaScript-проектов с помощью GruntСборка JavaScript-проектов с помощью Grunt
Сборка JavaScript-проектов с помощью Grunt
 
数式を構文解析した話
数式を構文解析した話数式を構文解析した話
数式を構文解析した話
 
OpenResty/Lua 70+ Advanced Programming Skills and Optimization tips
OpenResty/Lua 70+ Advanced Programming Skills and Optimization tipsOpenResty/Lua 70+ Advanced Programming Skills and Optimization tips
OpenResty/Lua 70+ Advanced Programming Skills and Optimization tips
 
Invoke y como poner en marcha un entorno de trabajo
Invoke y como poner en marcha un entorno de trabajoInvoke y como poner en marcha un entorno de trabajo
Invoke y como poner en marcha un entorno de trabajo
 
Linklist through struct
Linklist through structLinklist through struct
Linklist through struct
 
Collection pipeline par Mathieu Godart
Collection pipeline par  Mathieu GodartCollection pipeline par  Mathieu Godart
Collection pipeline par Mathieu Godart
 
Introduction to Service Worker
Introduction to Service WorkerIntroduction to Service Worker
Introduction to Service Worker
 
Week 7 unit3 (chapter 10-11)
Week 7   unit3 (chapter 10-11)Week 7   unit3 (chapter 10-11)
Week 7 unit3 (chapter 10-11)
 
C/C++とWebAssemblyを利用したライブラリ開発
C/C++とWebAssemblyを利用したライブラリ開発C/C++とWebAssemblyを利用したライブラリ開発
C/C++とWebAssemblyを利用したライブラリ開発
 
Docstringを書こう!
Docstringを書こう!Docstringを書こう!
Docstringを書こう!
 
2014 it - app dev series - 03 - interagire con il database
2014   it - app dev series - 03 - interagire con il database2014   it - app dev series - 03 - interagire con il database
2014 it - app dev series - 03 - interagire con il database
 
Slay
SlaySlay
Slay
 
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017
이승재, 강성훈, 내가 만든 언어의 개발환경을 Visual Studio Code로 빠르고 쉽게 구축하기 #2, NDC2017
 

Rubyslava2102

  • 1. JavaScript Márius Šajgalík Rubyslava 21.2.2013 Márius Šajgalík 1
  • 2. Ako vytvoriť objekt var o1 = { }; var o2 = new Object(); var o3 = { write: function(a) { console.log(a); } }; o3.write(1); Rubyslava 21.2.2013 Márius Šajgalík 2
  • 3. Ako vytvoriť objekt function O4(){ this.write = function(a) { console.log(a); }; } var O5 = function() { this.write = function(a) { console.log(a); }; }; var o4 = new O4(); o4.write(1); Rubyslava 21.2.2013 Márius Šajgalík 3
  • 4. Ako vytvoriť objekt function Robot(_params) { var rotor; // private this.name; // public function init(params) { ... // compute _rotor from params rotor = _rotor; } init(_params); } Rubyslava 21.2.2013 Márius Šajgalík 4
  • 5. Lokálne premenné function F1() { var x = 2; // poznáme iba vnútri F1 this.write = function() { console.log(x); }; } var f1 = new F1(); f1.write(); f1.set = function(x2) { x = x2; }; // nové globálne x f1.set(3); f1.write(); // lokálne x nezmenené console.log(x); // globálne x = 3 Rubyslava 21.2.2013 Márius Šajgalík 5
  • 6. this function Robot(params){ var name = params.name; this.getName = function() { return name; }; this.getState = function() { ... return weather; }; this.hasUmbrella = function() { var state = ??? // this.getState is undefined }; } Rubyslava 21.2.2013 Márius Šajgalík 6
  • 7. this function Robot(params){ ... var This = this; ... this.hasUmbrella = function() { var state = This.getState(); if (state.rain) return true; else return false; }; } Rubyslava 21.2.2013 Márius Šajgalík 7
  • 8. Ako zmeniť this? function predstavSa(meno) { console.log('Ahoj, som ' + this + ' a moje meno je ' + meno); } predstavSa.call('robot', 'Wall-E'); predstavSa.apply('robot', ['Wall-E']); Array.prototype.slice.call('Wall-E', 2, 5) Rubyslava 21.2.2013 Márius Šajgalík 8
  • 9. Slovník var slovnik = { }; slovnik['apple'] = 'jablko'; slovnik["o'clock"] = 'hodín'; slovnik['apple']; // 'jablko' slovnik['jablko']; // undefined slovnik['constructor']; // function Rubyslava 21.2.2013 Márius Šajgalík 9
  • 10. Slovník function _slovnik() { var slovnik = { }; this.get = function(word) { if (word == 'constructor') word = '_' + word; return slovnik[word]; }; this.set = function(word, translation) { if (word == 'constructor') word = '_' + word; slovnik[word] = translation; }; } var slovnik = new _slovnik(); Rubyslava 21.2.2013 Márius Šajgalík 10
  • 11. Slovník function _slovnik() { var slovnik = { }; this.get = function(word) { return slovnik['_' + word]; }; this.set = function(word, translation) { slovnik['_' + word] = translation; }; } var slovnik = new _slovnik(); Rubyslava 21.2.2013 Márius Šajgalík 11
  • 12. Ako spraviť asynchrónne API var API = { }; API.xhr = { get: function(params, callback) { ... } getJSON: function(params, callback) { ... } post: function(params, callback) { ... } }; Rubyslava 21.2.2013 Márius Šajgalík 12
  • 13. Ako spraviť asynchrónne API var API = { }; API._db = function (database) { function init(params, callback) { ... }; this.get = function(params, callback) { ... }; this.set = function(params, callback) { ... }; init({ 'db_name': database }, function(response) { if (response.error) console.error(response.cause); }); }; API.db = new API._db('my database'); Rubyslava 21.2.2013 Márius Šajgalík 13
  • 14. Ako spraviť asynchrónne API get: function(params, callback) { DB.get(params.table, params.key, function(value) { callback({ 'ok': true, 'value': value }); }, function(error) { callback({ 'error': true, 'cause': error }); }); } Rubyslava 21.2.2013 Márius Šajgalík 14
  • 15. Ako spraviť asynchrónne API var API = { }; API.core = { getKeywords: function(params, callback) { ... } }; Rubyslava 21.2.2013 Márius Šajgalík 15
  • 16. Variabilné parametre getKeywords: function(params, callback) { if (!params.URL) params = { 'URL': params }; if (!params.html) { API.xhr.get(params.URL,function(response) { params.html = response.html; This.getKeywords(params, callback); }); return; } } Rubyslava 21.2.2013 Márius Šajgalík 16
  • 17. Variabilné parametre getKeywords: function(params, callback) { ... if (!params.words) { params.words = tokenize(params.html); } ... } Rubyslava 21.2.2013 Márius Šajgalík 17
  • 18. Variabilné parametre getKeywords: function(params, callback) { if (params.words) { getKeywordsFromWords(params, callback); return; } if (params.html) { getKeywordsFromHtml(params, callback); return; } ... } Rubyslava 21.2.2013 Márius Šajgalík 18
  • 19. Kopírovanie objektov – dedenie inštancií? var O = function () { this.write = function (a) { console.log(a); }; }; var o = new O(); o.write(1); var p = Object.create(o); p.write(1); o.write2 = function (a) { console.log(a + 1); }; o.write2(1); p.write2 = function (a) { console.log(a - 1); }; o.write2(1); p.write2(1); Rubyslava 21.2.2013 Márius Šajgalík 19
  • 20. Ako písať zátvorky? function areWeFinished() { ... } function areWeFinished() { ... } Rubyslava 21.2.2013 Márius Šajgalík 20
  • 21. Ako písať zátvorky? function areWeFinished() { return { 'yes': true }; } Rubyslava 21.2.2013 Márius Šajgalík 21
  • 22. Ako písať zátvorky? function areWeFinished() { return ; // takto to interpretuje JavaScript { 'yes': true }; } areWeFinished(); // == undefined !!! Rubyslava 21.2.2013 Márius Šajgalík 22
  • 23. Ako písať zátvorky? function areWeFinished() { return { 'yes': true }; } Rubyslava 21.2.2013 Márius Šajgalík 23
  • 24. areWeFinished() == true Rubyslava 21.2.2013 Márius Šajgalík 24