+ All Categories
Home > Engineering > Object oriented JavaScript

Object oriented JavaScript

Date post: 08-Apr-2017
Category:
Upload: rafal-wesolowski
View: 146 times
Download: 0 times
Share this document with a friend
38
Object-Oriented JavaScript @WesolowskiRafal
Transcript
Page 1: Object oriented JavaScript

Object-Oriented JavaScript

@WesolowskiRafal

Page 2: Object oriented JavaScript

javascript ist asynchronDas bleibt so!!!

JS Basic

Page 3: Object oriented JavaScript

Was ist asynchronität bei JS

◉ setTimeout / setInterval ◉ XMLHttpRequest ◉ WebSocket ◉ File API, ◉ Web Database API Technologies ◉ und ...

Page 4: Object oriented JavaScript

Place your screenshot here

Beispiel 1console.log('Start')

var doSomethingOne = function() {

console.log('doSomethingOne()');

};

setTimeout(doSomethingOne, 500);

console.log('End');

https://jsfiddle.net/wesoly/h2cxabjc/

Page 5: Object oriented JavaScript

Place your screenshot here

Beispiel 2console.log('before ajax call');

$.ajax({

url: 'test',

success: function(data) {

console.log('in success callback');

}

});

console.log('after ajax call');

http://jsfiddle.net/wesoly/y6XgY/749/

Page 7: Object oriented JavaScript

◉ async.js◉ Promise◉ ...

Nächste Schulung!

Lösung

Page 8: Object oriented JavaScript

object literals vs constructor functions

1

Page 9: Object oriented JavaScript

object literals constructor functions

function MyData(foo, bar) {

this.foo = foo;

this.bar = bar;

this.verify = function() {};

}

var data = {

foo: 42,

bar: 43,

verify: function() {},

};

var myData = new MyData(42,43);

https://jsfiddle.net/wesoly/uvcfevxz/

Should I be using object literals or constructor functions?

Page 10: Object oriented JavaScript

JavaScript .prototype2

Page 11: Object oriented JavaScript

Beispiel 1

function Foo(){}

Foo.prototype.fooBar = function(){

return true;

};

var foo1 = Foo();

console.log(foo1);

var foo2 = new Foo();

console.log(foo2, foo2.fooBar());

Page 12: Object oriented JavaScript

Place your screenshot here

Beispiel 1 - Resultfunction Foo(){}

Foo.prototype.fooBar = function(){

return true;

};

var foo1 = Foo();

console.log(foo1);

var foo2 = new Foo();

console.log(foo2, foo2.fooBar());

https://jsfiddle.net/wesoly/1dytk4mg/

Page 13: Object oriented JavaScript

Beispiel 2function Foo(){

this.fooBar = function(){

return true;

};

}

Foo.prototype.fooBar = function(){

return false;

};

var foo = new Foo();

console.log(foo.fooBar());

Page 14: Object oriented JavaScript

Beispiel 2 - Resultfunction Foo(){

this.fooBar = function(){

return true;

};

}

Foo.prototype.fooBar = function(){

return false;

};

var foo = new Foo();

console.log(foo.fooBar());

https://jsfiddle.net/wesoly/edjyhzL8/

Page 15: Object oriented JavaScript

Beispiel 3function Foo(){

this.bar = true;

}

var foo1 = new Foo();

var foo2 = new Foo();

Foo.prototype.fooBar = function(){

return this.bar;

};

console.log(foo1.fooBar());

console.log(foo2.fooBar());

https://jsfiddle.net/wesoly/zcg68twc/

Page 16: Object oriented JavaScript

Quizfunction Foo(){

this.bar = true;

}

var foo1 = new Foo();

var foo2 = new Foo();

// Add a method to the Foo prototype which

// returns itself and modifies bar

console.log(foo1.fooBar().bar);

console.log(foo2.fooBar().bar);

https://jsfiddle.net/wesoly/kgvqq8c2/

Page 17: Object oriented JavaScript

Quiz - Resultfunction Foo(){

this.bar = true;

}

var foo1 = new Foo();

var foo2 = new Foo();

Foo.prototype.fooBar = function() {

this.bar = false;

return this;

}

console.log(foo1.fooBar().bar);

console.log(foo2.fooBar().bar);

https://jsfiddle.net/wesoly/kgvqq8c2/

Page 18: Object oriented JavaScript

Private in JavaScript3

Page 19: Object oriented JavaScript

Place your screenshot here

Beispiel 1function Container(foo) {

this.foo = foo;

var secret = 3;

}

var container = new Container('test');

console.log('container:', container);

console.log('container.secret: ', container.secret);

https://jsfiddle.net/wesoly/0345f0ex/

Page 20: Object oriented JavaScript

Place your screenshot here

Beispiel 2function Container(foo) {

var secret = 3;

this.foo = foo;

this.getSecret = function() {

return secret + bar();

}

function bar() {

return 1;

};

}

var container = new Container('test');

console.log('container:', container);

console.log('container.getSecret(): ', container.getSecret());

console.log('container.bar(): ', container.bar());

https://jsfiddle.net/wesoly/0345f0ex/

Page 22: Object oriented JavaScript

Place your screenshot here

Beispiel 1var Foo = (function () {

var privateBar = 1;

return {

getBar : function() {

return privateBar;

}

};

})();

console.log('Foo: ', Foo);

console.log('Foo.getBar(): ', Foo.getBar());

console.log('Foo.privateBar: ', Foo.privateBar);

https://jsfiddle.net/wesoly/x22w9wcq/

Page 23: Object oriented JavaScript

Place your screenshot here

Beispiel 2var Foo = (function () {

var privateBar = function() {

return 1;

};

return {

getBar : function() {

return privateBar();

}

};

})();

console.log('Foo: ', Foo);

console.log('Foo.getBar(): ', Foo.getBar());

console.log('Foo.privateBar(): ', Foo.privateBar());

https://jsfiddle.net/wesoly/x22w9wcq/

Page 24: Object oriented JavaScript

Quizvar Foo = (function () {

var privateBar = function() {

// execute here getBar() -> how?

};

return {

getBar : function() {

return 1;

}

};

})();

Page 25: Object oriented JavaScript

in diesem Beispiel

geht nicht!

Page 26: Object oriented JavaScript

Module Pattern,Accessing “Private” Methods

var Foo = (function() {

var obj = {

publicFoo: function() {

return 1;

},

publicFooBar: function() {

return privateBar() + 1;

}

};

var privateBar = function() {

return obj.publicFoo() * 2;

};

return obj;

})();

console.log(Foo.publicFooBar()) // 3

var Foo = (function() {

var publicFoo = function() {

return 1;

};

var publicFooBar = function() {

return privateBar() + 1;

};

var privateBar = function() {

return publicFoo() * 2;

};

return {

publicFoo : publicFoo,

publicFooBar: publicFooBar

};

})();

console.log(Foo.publicFooBar()) // 3

https://jsfiddle.net/wesoly/94ygh88b/

Page 27: Object oriented JavaScript

definePropertyObject.defineProperty(obj, prop, descriptor)

5

Page 29: Object oriented JavaScript

Place your screenshot here

Beispiel 1var foo = {};

Object.defineProperty(foo, 'bar', {

value: 1

});

console.log('foo:', foo);

console.log('1 | foo.bar:', foo.bar);

foo.bar = 2;

console.log('2 | foo.bar:', foo.bar);

https://jsfiddle.net/wesoly/nq3j21aa/

Page 30: Object oriented JavaScript

Place your screenshot here

Beispiel 2var foo = {};

Object.defineProperty(foo, 'bar', {

value: 1,

writable: true

});

console.log('foo:', foo);

console.log('1 | foo.bar:', foo.bar);

foo.bar = 2;

console.log('2 | foo.bar:', foo.bar);

https://jsfiddle.net/wesoly/nq3j21aa/

Page 31: Object oriented JavaScript

Place your screenshot here

Beispiel 3var foo = {};

Object.defineProperty(foo, 'bar', {

value: 1,

});

console.log('1 | foo:', foo);

delete foo.bar;

console.log('2 | foo:', foo);

https://jsfiddle.net/wesoly/nq3j21aa/

Page 32: Object oriented JavaScript

Place your screenshot here

Beispiel 4var foo = {};

Object.defineProperty(foo, 'bar', {

value: 1,

configurable: true

});

console.log('1 | foo:', foo);

delete foo.bar;

console.log('2 | foo:', foo);

https://jsfiddle.net/wesoly/nq3j21aa/

Page 33: Object oriented JavaScript

Place your screenshot here

Beispiel 5var foo = {

fooBar: 2

};

Object.defineProperty(foo, 'bar', {

value: 1,

});

console.log('foo:', foo);

for (var i in foo) {

console.log(i, foo[i]);

}

https://jsfiddle.net/wesoly/nq3j21aa/

Page 34: Object oriented JavaScript

Place your screenshot here

Beispiel 6var foo = {

fooBar: 2

};

Object.defineProperty(foo, 'bar', {

value: 1,

enumerable: true

});

console.log('foo:', foo);

for (var i in foo) {

console.log(i, foo[i]);

}

https://jsfiddle.net/wesoly/nq3j21aa/

Page 35: Object oriented JavaScript

defineProperty

Getter & Setter

Page 36: Object oriented JavaScript

Place your screenshot here

Beispiel 1function Archiver() {

var temperature = 0;

Object.defineProperty(this, 'temperature', {

get: function() {

return temperature + ' °C';

}

});

}

var arc = new Archiver();

console.log(arc.temperature);

https://jsfiddle.net/wesoly/vzptz7of/

Page 37: Object oriented JavaScript

Place your screenshot here

Beispiel 2function Archiver() {

var temperature = 0, archive = [];

Object.defineProperty(this, 'temperature', {

get: function() {

return temperature + ' °C';

},

set: function(value) {

temperature = value;

archive.push(temperature);

}

});

this.getArchive = function() { return archive; };

}

var arc = new Archiver();

console.log(arc.temperature);

arc.temperature = 11;

console.log(arc.temperature);

arc.temperature = 13;

console.log(arc.getArchive()); https://jsfiddle.net/wesoly/nq3j21aa/


Recommended