SlideShare a Scribd company logo
1 of 50
made by Me
Matreshka.js
JavaScript Framework for Developers
<input type="text" class="my-input">
<script src="matreshka.min.js"></script>
<script>
var app = new Matreshka;
app.bindNode('x', '.my-input');
app.x = 'Two-way data binding in JS? O rly?';
</script>
Structure
● Class Matreshka (Core)
● Class Matreshka.Object (Model)
● Class Matreskka.Array (Collection)
Class Mathreska
Examples
// creating of the instance
var mk = new Matreshka; // or var mk = new MK;
// inheritance
var MyClass = Class({
'extends': Matreshka,
constructor: function () {
this.sayHello();
},
sayHello: function () {
alert("Hello World!");
}
});
// inheritance es6
class MyClass extends Matreshka {
constructor () {
this.sayHello();
}
sayHello () {
alert('Hello World!');
}
}
Class Mathreska
● isMK
● $sandbox
● sandbox
● on
● onDebounce
● once
● off
● trigger
● bindNode
● bindOptionalNode
● unbindNode
● boundAll
● $bound
● bound
● selectAll
● $
● select
● eq
● defineGetter
● defineSetter
● mediate
● linkProps
● get
● set
● remove
● define
● delay
● version
● isXDR
● defaultBinders
● extend
● Class
● $b
● useAs$
● noop
● each
● debounce
● lookForBinder
● randomString
● binders
Matreshka#on(names, callback, triggerOnInit=false,
context)
Examples
// simple
this.on('foo', function () {
alert('Custom Event is fired');
});
this.trigger('foo');
// Passing the context
this.on('foo', function () {
alert(this.a); // 5
}, {a: 5});
this.trigger('foo', 'Hello world');
// Fire the event after initialization
this.on('foo', function () {
alert('bar');
}, true);
Matreshka#trigger(names, arg)
Examples
this.on('foo bar', function (a, b, c) {
alert(a + b + c);
});
this.trigger('foo', 1, 2, 3); // 6
Matreshka#bindNode(key, node, binder, eventOptions)
Examples
this.bindNode('myKey', '.my-element', {
on: 'click',
getValue: function () { ...
},
setValue: function () { ...
},
initialize: function () { ...
}
});
Matreshka#bindNode(key, node, binder, eventOptions)
Examples
this.bindNode('myKey', '.my-checkbox', {
on: 'click',
getValue: function () {
return this.checked;
},
setValue: function (v) {
this.checked = !!v;
}
});
this.myKey = true;
Matreshka#bindNode(key, node, binder, eventOptions)
Examples
this.bindNode('myKey', '.my-slider', {
on: 'slide',
getValue: function () {
return $(this).slider('option', 'value');
},
setValue: function (v) {
$(this).slider('option', 'value', v);
},
initialize: function () {
$(this).slider({
min: 0,
max: 100
});
}
});
this.myKey = 42;
Matreshka#bindNode(key, node, binder, eventOptions)
Examples
this.bindNode('myKey', '.my-element', binder, {
assignDefaultValue: false
});
Matreshka#bindNode(keyElementPairs, binder,
eventOptions)
Examples
this.bindNode({
myKey1: '.custom-checkbox',
myKey2: 'textarea'
});
Matreshka#bindNode(setOfArguments, eventOptions)
Examples
this.bindNode([
[{
myKey1: '.my-element1',
myKey2: '.my-element2'
}],
[{
myKey3: '.my-element3',
myKey4: '.my-element4'
}, {
on: 'click',
getValue: function () { ... },
setValue: function () { ... }
}]
……..
]);
Matreshka#binders
Examples
MK.binders.myCoolBinder = function (var1, var2) {
return {
on: 'click',
getValue: function () { ...
},
setValue: function () { ...
},
initialize: function () { ...
}
};
};
this.bindNode('myKey', '.my-element', MK.binders.myCoolBinder('Hello', 'World'));
Matreshka#binders
The list of the predefined binders:
● Matreshka.binders.innerHTML
● Matreshka.binders.visibility
● Matreshka.binders.className
● Matreshka.binders.property
● Matreshka.binders.attribute
● Matreshka.binders.input
● Matreshka.binders.textarea
● Matreshka.binders.select
Matreshka.binders.innerHTML()
Examples
this.bindElement('myKey', '.my-element', MK.binders.innerHTML());
// the same as
this.bindElement('myKey', '.my-element', {
setValue: function (v) {
this.innerHTML = v;
}
});
Matreshka.binders.visibility(value=true)
Examples
this.bindElement('myKey', '.my-element', MK.binders.visibility(true));
// the same as
this.bindElement('myKey', '.my-element', {
setValue: function (v) {
this.style.display = v ? '' : 'none';
}
});
this.bindElement('myKey', '.my-element', MK.binders.visibility(false));
// the same as
this.bindElement('myKey', '.my-element', {
setValue: function (v) {
this.style.display = v ? 'none' : '';
}
});
Matreshka.binders.className(className)
Examples
this.bindElement('myKey', '.my-element', MK.binders.className('foo'));
// the same as
this.bindElement('myKey', '.my-element', {
setValue: function (v) {
$(this).toggleClass('foo', v);
}
});
this.myKey = true; // adds the 'foo' class
this.myKey = false; // removes the 'foo' class
this.bindElement('myKey', '.my-element', MK.binders.className('!foo'));
// the same as
this.bindElement('myKey', '.my-element', {
setValue: function (v) {
$(this).toggleClass('foo', !v);
}
});
this.myKey = false; // adds the 'foo' class
this.myKey = true; // removes the 'foo' class
Matreshka#set(key, value, eventOptions)
The list of the supported flags:
● silent - do not call the change and change:KEY events
● silentHTML - do not change the state of the bound objects
● force - call the change and change:KEY events even though the property value has not been changed
● forceHTML - change the state of the bound element even though the property value has not been changed. This option is necessary
if the bound element has been rendered after the binding (for example, the option tags have been added to select tag)
● skipMediator - prevents the property transformation by a mediator
● skipLinks - prevents the work of dependencies created with the help of Matreshka#linkProps
Matreshka#set(key, value, eventOptions)
Examples
// simple
this.on('change:myKey', function (eventOptions) {
alert(eventOptions.value);
});
this.set('myKey', 3);
// using eventOptions
this.on('change:myKey', function (eventOptions) {
alert(eventOptions.value);
});
this.set('myKey', 4, {
silent: true
});
// passing custom data
this.on('change:myKey', function (eventOptions) {
alert(eventOptions.myCustomFlag);
});
this.set('myKey', 4, {
myCustomFlag: 42
});
Matreshka#set(keyValuePairs, eventOptions)
Examples
this.set({
myKey1: 1,
myKey2: 2
});
// passing eventOptions as second argument
this.set({
myKey: 3
}, {
myFlag: 'Jigurda'
});
Matreshka#$sandbox
Examples
this.bindNode('sandbox', '.app');
this.$sandbox; // the same as $('.app')
Matreshka#$bound(key)
Examples
this.bindNode('myKey', '.my-element');
this.$bound('myKey'); // will return $('.my-element')
// without key
this.bindNode('sandbox', '.app');
this.$bound(); // will return $('.app')
Matreshka#mediate(key, mediator)
Examples
this.mediate('x', function (s) {
return String(s);
});
this.x = 1;
alert(typeof this.x); // 'string'
// a list of keys which are separated by space
this.mediate('x y', function (s) {
return String(s);
});
// an array of keys
this.mediate([ 'x', 'y' ], function (s) {
return String(s);
});
Matreshka#mediate(keyMediatorPairs)
Examples
this.mediate({
x: String,
y: Number,
z: Boolean
});
this.x = 1;
this.y = 2;
this.z = 3;
alert(typeof this.x); // 'string'
alert(typeof this.y); // 'number'
alert(typeof this.z); // 'boolean'
// a list of keys which are separated by spaces
this.mediate({
'u v': String,
'w x': Number,
'y z': Boolean
});
Matreshka#linkProps(keys1, keys2, handler,
setOnInit=true)
Examples
this.linkProps('greeting', 'name', function () {
return 'Hello, ' + this.name + '!';
});
this.name = 'Joe';
alert(this.greeting); // 'Hello, Joe!'
Matreshka#linkProps(keys1, keys2, handler,
setOnInit=true)
Examples
this.a = 3;
this.b = 4;
this.linkProps('p', 'a b', function (a, b) {
return (a + b) * 2;
});
this.linkProps('a', 'p b', function (p, b) {
return p / 2 - b;
});
this.linkProps('b', 'p a', function (p, a) {
return p / 2 - a;
});
alert(this.p); // 14
this.on('change:p', function () {
alert('The perimeter has been changed and equals ' + this.p);
});
this.a = 5; // alerts 'The perimeter has been changed and equals 18'
Matreshka#linkProps(keys, instancesAndKeys, handler,
setOnInit=true)
Examples
anotherInstance1.a = 2;
anotherInstance2.b = 3;
this.linkProps('sum', [
anotherInstance1, 'a',
anotherInstance2, 'b'
], function (a, b) {
return a + b;
});
alert(this.sum); // 5
this.on('change:sum', function () {
alert('this.sum equals ' + this.sum);
});
anotherInstance1.a = 5; // 'this.sum equals 8'
Matreshka#getAnswerToTheUltimateQuestionOfLifeThe
UniverseAndEverything()
Examples
this.getAnswerToTheUltimateQuestionOfLifeTheUniverseAndEverything();
Class Mathreska.Object
Examples
// creation of the instance
new MK.Object;
// creation of the instance with two specified properties
new MK.Object({
a: 1,
b: 2
});
// inheritance
var MyClass = Class({
'extends': MK.Object,
constructor: function() {
this.sayHello();
},
sayHello: function() {
alert('Hello World!');
}
});
Class Mathreska.Object
Examples
// adding the properties which are responsible for the data
this.addDataKeys('a b');
this.a = 1;
this.b = 2;
this.c = 3;
// adding the properties which are responsible for the data with the default value
this.jset({
a: 1,
b: 2
});
this.c = 3;
// in both cases will return the object {a: 1, b: 2}
this.toJSON();
Class Mathreska.Object
Examples
// the same as new MK.Object().jset({a: 1, b: 2});
new MK.Object({
a: 1,
b: 2
});
Class Mathreska.Object
● isMKObject
● keys
● on
● hasOwnProperty
● toObject
● toNative
● toJSON
● keyOf
● jset
● remove
● addDataKeys
● removeDataKeys
● each
Matreshka.Object#toJSON()
Examples
var mkObject = new MK.Object({
a: 1,
b: 2,
c: new MK.Object({
d: 3,
e: 4
})
});
// returns {a: 1, b: 2, c: {d: 3, e: 4}}
mkObject.toJSON();
Matreshka.Object#jset(key, value, evtOpts)
Examples
this.jset('a', 1).jset('b', 2);
this.jset('a', 1).jset('b', 2);
// assigns 3 to the 'c' property,
// but does not add the key to the list of keys which are responsible for the data
this.set('c', 3);
this.each(function (value, key) {
console.log(key, value);
});
// displays 'a' 1 and 'b' 2
console.log(this.keys()); // displays ['a', 'b']
console.log(this.toJSON()); // displays {a: 1, b: 2}
// after using the Matreshka.Object#jset method, you can work with a property like with an ordinary one
this.jset('a', 1).jset('b', 2);
this.set('a', 3);
this.b = 4;
Class Mathreska.Array
Examples
// creation of the instance
new MK.Array;
// creation of the instance with specify length
new MK.Array(42);
// passing data on creation
new MK.Array('Hi', {a: 'b'});
// inheritance
var MyClass = Class({
'extends': MK.Array,
constructor: function () {
this.sayHello();
},
sayHello: function () {
alert('Hello World!');
}
});
Class Mathreska.Array
Examples
// define Model
var MyModel = Class({
'extends': MK.Object,
constructor: function (data) {
this.jset(data);
}
});
// define the class for the collection
var MyArray = Class({
'extends': MK.Array,
Model: MyModel
});
// create the class instance
var myArray = new MyArray;
Class Mathreska.Array
Examples
// add two elements
myArray.push({
a: 1,
b: 2
}, {
a: 3,
b: 4
});
// will return [{a: 1, b: 2}, {a: 3, b: 4}]
myArray.toJSON();
Class Mathreska.Array
Examples
// automatic rendering
var MyModel = MK.Class({
'extends': MK.Object,
constructor: function (data) {
this.jset(data);
this.on('render', function () {
this.bindNode('value', ':sandbox', MK.binders.innerHTML());
});
}
});
var MyArray = MK.Class({
'extends': MK.Array,
Model: MyModel,
itemRenderer: '<li>',
constructor: function () {
this.bindNode('sandbox', '.my-list');
}
});
Class Mathreska.Array
● isMKArray
● useBindingsParser
● renderIfPossible
● itemRenderer
● Model
● mediateItem
● on
● recreate
● toArray
● toNative
● rerender
● hasOwnProperty
● toJSON
● pull
● each
● METHOD
● METHOD_
<virtual>Matreshka.Array#itemRenderer
Examples
var MyArray = Class({
'extends': MK.Array,
itemRenderer: '<li>',
Model: MyModel,
constructor: function () {
this.bindNode('sandbox', '.my-list');
}
});
var MyArray = Class({
'extends': MK.Array,
itemRenderer: '<li>',
Model: MyModel,
constructor: function () {
this.bindNode('sandbox', '.my-widget');
this.bindNode('container', '.my-list');
}
});
<virtual>Matreshka.Array#itemRenderer
Examples
var MyArray = Class({
'extends': MK.Array,
Model: MyModel,
itemRenderer: '<div class="my-div">Be cool</div>', // '#be-cool-template'
constructor: function () { ... }
});
var MyArray = Class({
'extends': MK.Array,
Model: MyModel,
itemRenderer: function () {
return '<div class="my-div">Be cool</div>'; // '#be-cool-template' or document.createElement( 'div' )
},
constructor: function () { ... }
});
<virtual>Matreshka.Array#Model(data, mkArray)
Examples
var MyModel = Class({
'extends': MK.Object,
constructor: function (data) {
this.jset(data);
this.doSomething();
},
doSomething: function () { ... }
});
var MyArray = Class({
'extends': MK.Array,
Model: MyModel
});
<virtual>Matreshka.Array#Model(data, mkArray)
Examples
var myArray = new MyArray;
myArray.push({
a: 1,
b: 2
}, {
a: 3,
b: 4
})
// will return [{a: 1, b: 2}, {a: 3, b: 4}]
myArray.toJSON();
// es6
class MyArray extends MK.Array {
get Model() {
return MyModel;
}
}
Matreshka.Array#METHOD()
Includes all the methods existing in the native JavaScript Array.
Remarks
● The forEach method returns itself instead of undefined
● The methods which return a new array (splice, slice, filter, map...) originally, in Matreshka they return a new Matreshka.Array
instance
Matreshka.Array#METHOD_()
The list of the available flags:
● silent: true - disables event triggering
● dontRender: true - disables rendering
● skipMediator: true - disables mediators
Matreshka.Array#METHOD_()
Examples
this.push_(1, 2, 3, {
silent: true
});
this.pop_({
silent: true
});
this.on('modify', function (evt) {
alert(evt.flag); // 42
});
this.push_(1, 2, 3, {
flag: 42
});
Matreshka.Array#pull(index, evtOptions)
Examples
// passing index of the array
var removed;
this.recreate(['a', 'b', 'c']);
removed = this.pull(1);
alert(removed); // 'b'
alert(this.toString()); // 'a,c'
// passing of the delete
var object1 = {},
object2 = {},
removed;
this.push(object1, object2);
removed = this.pull(object2);
alert(removed === object2); // true
alert(this.length); // 1
Questions?
The end

More Related Content

What's hot

JQuery New Evolution
JQuery New EvolutionJQuery New Evolution
JQuery New EvolutionAllan Huang
 
Chaining and function composition with lodash / underscore
Chaining and function composition with lodash / underscoreChaining and function composition with lodash / underscore
Chaining and function composition with lodash / underscoreNicolas Carlo
 
Regexes and-performance-testing
Regexes and-performance-testingRegexes and-performance-testing
Regexes and-performance-testingdoughellmann
 
Interoperable Component Patterns
Interoperable Component PatternsInteroperable Component Patterns
Interoperable Component PatternsMatthew Beale
 
React in 50 Minutes (DevNexus)
React in 50 Minutes (DevNexus) React in 50 Minutes (DevNexus)
React in 50 Minutes (DevNexus) Maarten Mulders
 
Using Change Streams to Keep Up with Your Data
Using Change Streams to Keep Up with Your DataUsing Change Streams to Keep Up with Your Data
Using Change Streams to Keep Up with Your DataEvan Rodd
 
Dependency Injection
Dependency InjectionDependency Injection
Dependency InjectionRifat Nabi
 
React, Redux and es6/7
React, Redux and es6/7React, Redux and es6/7
React, Redux and es6/7Dongho Cho
 
안드로이드 데이터 바인딩
안드로이드 데이터 바인딩안드로이드 데이터 바인딩
안드로이드 데이터 바인딩GDG Korea
 
Php user groupmemcached
Php user groupmemcachedPhp user groupmemcached
Php user groupmemcachedJason Anderson
 
"Auth for React.js APP", Nikita Galkin
"Auth for React.js APP", Nikita Galkin"Auth for React.js APP", Nikita Galkin
"Auth for React.js APP", Nikita GalkinFwdays
 
#살아있다 #자프링외길12년차 #코프링2개월생존기
#살아있다 #자프링외길12년차 #코프링2개월생존기#살아있다 #자프링외길12년차 #코프링2개월생존기
#살아있다 #자프링외길12년차 #코프링2개월생존기Arawn Park
 
Android Testing
Android TestingAndroid Testing
Android TestingEvan Lin
 

What's hot (19)

jQuery secrets
jQuery secretsjQuery secrets
jQuery secrets
 
JQuery New Evolution
JQuery New EvolutionJQuery New Evolution
JQuery New Evolution
 
Chaining and function composition with lodash / underscore
Chaining and function composition with lodash / underscoreChaining and function composition with lodash / underscore
Chaining and function composition with lodash / underscore
 
Regexes and-performance-testing
Regexes and-performance-testingRegexes and-performance-testing
Regexes and-performance-testing
 
Dwr explanation
Dwr explanationDwr explanation
Dwr explanation
 
Interoperable Component Patterns
Interoperable Component PatternsInteroperable Component Patterns
Interoperable Component Patterns
 
React in 50 Minutes (DevNexus)
React in 50 Minutes (DevNexus) React in 50 Minutes (DevNexus)
React in 50 Minutes (DevNexus)
 
Using Change Streams to Keep Up with Your Data
Using Change Streams to Keep Up with Your DataUsing Change Streams to Keep Up with Your Data
Using Change Streams to Keep Up with Your Data
 
Dependency Injection
Dependency InjectionDependency Injection
Dependency Injection
 
Magic methods
Magic methodsMagic methods
Magic methods
 
PHP 5 Magic Methods
PHP 5 Magic MethodsPHP 5 Magic Methods
PHP 5 Magic Methods
 
React, Redux and es6/7
React, Redux and es6/7React, Redux and es6/7
React, Redux and es6/7
 
안드로이드 데이터 바인딩
안드로이드 데이터 바인딩안드로이드 데이터 바인딩
안드로이드 데이터 바인딩
 
XML-RPC vs Psycopg2
XML-RPC vs Psycopg2XML-RPC vs Psycopg2
XML-RPC vs Psycopg2
 
Php user groupmemcached
Php user groupmemcachedPhp user groupmemcached
Php user groupmemcached
 
"Auth for React.js APP", Nikita Galkin
"Auth for React.js APP", Nikita Galkin"Auth for React.js APP", Nikita Galkin
"Auth for React.js APP", Nikita Galkin
 
Django - sql alchemy - jquery
Django - sql alchemy - jqueryDjango - sql alchemy - jquery
Django - sql alchemy - jquery
 
#살아있다 #자프링외길12년차 #코프링2개월생존기
#살아있다 #자프링외길12년차 #코프링2개월생존기#살아있다 #자프링외길12년차 #코프링2개월생존기
#살아있다 #자프링외길12년차 #코프링2개월생존기
 
Android Testing
Android TestingAndroid Testing
Android Testing
 

Viewers also liked

Viewers also liked (19)

"Gentleman of Rio en Medio"
"Gentleman of Rio en Medio""Gentleman of Rio en Medio"
"Gentleman of Rio en Medio"
 
Evaluation question 2
Evaluation question 2Evaluation question 2
Evaluation question 2
 
Chapter 12
Chapter 12Chapter 12
Chapter 12
 
Structure Technology for Success
Structure Technology for SuccessStructure Technology for Success
Structure Technology for Success
 
Neil Cliff CV 3
Neil Cliff CV 3Neil Cliff CV 3
Neil Cliff CV 3
 
CV
CVCV
CV
 
Reunion Programme
Reunion ProgrammeReunion Programme
Reunion Programme
 
Bars & Pubs - Eagles Nest
Bars & Pubs - Eagles NestBars & Pubs - Eagles Nest
Bars & Pubs - Eagles Nest
 
Conditional Sentence by Heni Wahyu Arini
Conditional Sentence by Heni Wahyu AriniConditional Sentence by Heni Wahyu Arini
Conditional Sentence by Heni Wahyu Arini
 
Nervous System
Nervous SystemNervous System
Nervous System
 
Woyzeck Programme
Woyzeck ProgrammeWoyzeck Programme
Woyzeck Programme
 
Insight presentation
Insight presentationInsight presentation
Insight presentation
 
Matreshka.js
Matreshka.jsMatreshka.js
Matreshka.js
 
New Microsoft PowerPoint Presentation
New Microsoft PowerPoint PresentationNew Microsoft PowerPoint Presentation
New Microsoft PowerPoint Presentation
 
Media research
Media researchMedia research
Media research
 
Media: Logbook
Media: LogbookMedia: Logbook
Media: Logbook
 
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTXMicrosoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
Microsoft WinDays16 Technology Dynamics AX 7 Cloud ERP.PPTX
 
Evaluation question 4
Evaluation question 4Evaluation question 4
Evaluation question 4
 
Independent textual analysis_1
Independent textual analysis_1Independent textual analysis_1
Independent textual analysis_1
 

Similar to Matreshka.js

Object-Oriented JavaScript
Object-Oriented JavaScriptObject-Oriented JavaScript
Object-Oriented JavaScriptkvangork
 
Object-Oriented Javascript
Object-Oriented JavascriptObject-Oriented Javascript
Object-Oriented Javascriptkvangork
 
Exercícios Netbeans - Vera Cymbron
Exercícios Netbeans - Vera CymbronExercícios Netbeans - Vera Cymbron
Exercícios Netbeans - Vera Cymbroncymbron
 
Architecting JavaScript Code
Architecting JavaScript CodeArchitecting JavaScript Code
Architecting JavaScript CodeSuresh Balla
 
Recompacting your react application
Recompacting your react applicationRecompacting your react application
Recompacting your react applicationGreg Bergé
 
Virtual Madness @ Etsy
Virtual Madness @ EtsyVirtual Madness @ Etsy
Virtual Madness @ EtsyNishan Subedi
 
AngularJS: what is underneath the hood
AngularJS: what is underneath the hood AngularJS: what is underneath the hood
AngularJS: what is underneath the hood DA-14
 
Developing web-apps like it's 2013
Developing web-apps like it's 2013Developing web-apps like it's 2013
Developing web-apps like it's 2013Laurent_VB
 
Writing Maintainable JavaScript
Writing Maintainable JavaScriptWriting Maintainable JavaScript
Writing Maintainable JavaScriptAndrew Dupont
 
Js 单元测试框架介绍
Js 单元测试框架介绍Js 单元测试框架介绍
Js 单元测试框架介绍louieuser
 
Bindings: the zen of montage
Bindings: the zen of montageBindings: the zen of montage
Bindings: the zen of montageKris Kowal
 
JavaScript and UI Architecture Best Practices
JavaScript and UI Architecture Best PracticesJavaScript and UI Architecture Best Practices
JavaScript and UI Architecture Best PracticesSiarhei Barysiuk
 
Ten useful JavaScript tips & best practices
Ten useful JavaScript tips & best practicesTen useful JavaScript tips & best practices
Ten useful JavaScript tips & best practicesAnkit Rastogi
 
Jeroen Vloothuis Bend Kss To Your Will
Jeroen Vloothuis   Bend Kss To Your WillJeroen Vloothuis   Bend Kss To Your Will
Jeroen Vloothuis Bend Kss To Your WillVincenzo Barone
 
Advance Java Programs skeleton
Advance Java Programs skeletonAdvance Java Programs skeleton
Advance Java Programs skeletonIram Ramrajkar
 
TypeScript Introduction
TypeScript IntroductionTypeScript Introduction
TypeScript IntroductionDmitry Sheiko
 

Similar to Matreshka.js (20)

Object-Oriented JavaScript
Object-Oriented JavaScriptObject-Oriented JavaScript
Object-Oriented JavaScript
 
Object-Oriented Javascript
Object-Oriented JavascriptObject-Oriented Javascript
Object-Oriented Javascript
 
JavaScript Refactoring
JavaScript RefactoringJavaScript Refactoring
JavaScript Refactoring
 
Clean Javascript
Clean JavascriptClean Javascript
Clean Javascript
 
Exercícios Netbeans - Vera Cymbron
Exercícios Netbeans - Vera CymbronExercícios Netbeans - Vera Cymbron
Exercícios Netbeans - Vera Cymbron
 
Architecting JavaScript Code
Architecting JavaScript CodeArchitecting JavaScript Code
Architecting JavaScript Code
 
Recompacting your react application
Recompacting your react applicationRecompacting your react application
Recompacting your react application
 
Virtual Madness @ Etsy
Virtual Madness @ EtsyVirtual Madness @ Etsy
Virtual Madness @ Etsy
 
AngularJS: what is underneath the hood
AngularJS: what is underneath the hood AngularJS: what is underneath the hood
AngularJS: what is underneath the hood
 
Backbone Basics with Examples
Backbone Basics with ExamplesBackbone Basics with Examples
Backbone Basics with Examples
 
Developing web-apps like it's 2013
Developing web-apps like it's 2013Developing web-apps like it's 2013
Developing web-apps like it's 2013
 
Writing Maintainable JavaScript
Writing Maintainable JavaScriptWriting Maintainable JavaScript
Writing Maintainable JavaScript
 
Js 单元测试框架介绍
Js 单元测试框架介绍Js 单元测试框架介绍
Js 单元测试框架介绍
 
Bindings: the zen of montage
Bindings: the zen of montageBindings: the zen of montage
Bindings: the zen of montage
 
JavaScript and UI Architecture Best Practices
JavaScript and UI Architecture Best PracticesJavaScript and UI Architecture Best Practices
JavaScript and UI Architecture Best Practices
 
Ten useful JavaScript tips & best practices
Ten useful JavaScript tips & best practicesTen useful JavaScript tips & best practices
Ten useful JavaScript tips & best practices
 
Jeroen Vloothuis Bend Kss To Your Will
Jeroen Vloothuis   Bend Kss To Your WillJeroen Vloothuis   Bend Kss To Your Will
Jeroen Vloothuis Bend Kss To Your Will
 
Advance Java Programs skeleton
Advance Java Programs skeletonAdvance Java Programs skeleton
Advance Java Programs skeleton
 
TypeScript Introduction
TypeScript IntroductionTypeScript Introduction
TypeScript Introduction
 
Ad java prac sol set
Ad java prac sol setAd java prac sol set
Ad java prac sol set
 

Recently uploaded

"I hear you": Moving beyond empathy in UXR
"I hear you": Moving beyond empathy in UXR"I hear you": Moving beyond empathy in UXR
"I hear you": Moving beyond empathy in UXRMegan Campos
 
LITTLE ABOUT LESOTHO FROM THE TIME MOSHOESHOE THE FIRST WAS BORN
LITTLE ABOUT LESOTHO FROM THE TIME MOSHOESHOE THE FIRST WAS BORNLITTLE ABOUT LESOTHO FROM THE TIME MOSHOESHOE THE FIRST WAS BORN
LITTLE ABOUT LESOTHO FROM THE TIME MOSHOESHOE THE FIRST WAS BORNtntlai16
 
Using AI to boost productivity for developers
Using AI to boost productivity for developersUsing AI to boost productivity for developers
Using AI to boost productivity for developersTeri Eyenike
 
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...David Celestin
 
Uncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac FolorunsoUncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac FolorunsoKayode Fayemi
 
ECOLOGY OF FISHES.pptx full presentation
ECOLOGY OF FISHES.pptx full presentationECOLOGY OF FISHES.pptx full presentation
ECOLOGY OF FISHES.pptx full presentationFahadFazal7
 
Digital collaboration with Microsoft 365 as extension of Drupal
Digital collaboration with Microsoft 365 as extension of DrupalDigital collaboration with Microsoft 365 as extension of Drupal
Digital collaboration with Microsoft 365 as extension of DrupalFabian de Rijk
 
BEAUTIFUL PLACES TO VISIT IN LESOTHO.pptx
BEAUTIFUL PLACES TO VISIT IN LESOTHO.pptxBEAUTIFUL PLACES TO VISIT IN LESOTHO.pptx
BEAUTIFUL PLACES TO VISIT IN LESOTHO.pptxthusosetemere
 
Ready Set Go Children Sermon about Mark 16:15-20
Ready Set Go Children Sermon about Mark 16:15-20Ready Set Go Children Sermon about Mark 16:15-20
Ready Set Go Children Sermon about Mark 16:15-20rejz122017
 
History of Morena Moshoeshoe birth death
History of Morena Moshoeshoe birth deathHistory of Morena Moshoeshoe birth death
History of Morena Moshoeshoe birth deathphntsoaki
 
BIG DEVELOPMENTS IN LESOTHO(DAMS & MINES
BIG DEVELOPMENTS IN LESOTHO(DAMS & MINESBIG DEVELOPMENTS IN LESOTHO(DAMS & MINES
BIG DEVELOPMENTS IN LESOTHO(DAMS & MINESfuthumetsaneliswa
 
lONG QUESTION ANSWER PAKISTAN STUDIES10.
lONG QUESTION ANSWER PAKISTAN STUDIES10.lONG QUESTION ANSWER PAKISTAN STUDIES10.
lONG QUESTION ANSWER PAKISTAN STUDIES10.lodhisaajjda
 
Introduction to Artificial intelligence.
Introduction to Artificial intelligence.Introduction to Artificial intelligence.
Introduction to Artificial intelligence.thamaeteboho94
 
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdfSOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdfMahamudul Hasan
 
Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...
Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...
Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...ZurliaSoop
 
Call Girls Near The Byke Suraj Plaza Mumbai »¡¡ 07506202331¡¡« R.K. Mumbai
Call Girls Near The Byke Suraj Plaza Mumbai »¡¡ 07506202331¡¡« R.K. MumbaiCall Girls Near The Byke Suraj Plaza Mumbai »¡¡ 07506202331¡¡« R.K. Mumbai
Call Girls Near The Byke Suraj Plaza Mumbai »¡¡ 07506202331¡¡« R.K. MumbaiPriya Reddy
 
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdfAWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdfSkillCertProExams
 

Recently uploaded (20)

"I hear you": Moving beyond empathy in UXR
"I hear you": Moving beyond empathy in UXR"I hear you": Moving beyond empathy in UXR
"I hear you": Moving beyond empathy in UXR
 
LITTLE ABOUT LESOTHO FROM THE TIME MOSHOESHOE THE FIRST WAS BORN
LITTLE ABOUT LESOTHO FROM THE TIME MOSHOESHOE THE FIRST WAS BORNLITTLE ABOUT LESOTHO FROM THE TIME MOSHOESHOE THE FIRST WAS BORN
LITTLE ABOUT LESOTHO FROM THE TIME MOSHOESHOE THE FIRST WAS BORN
 
Using AI to boost productivity for developers
Using AI to boost productivity for developersUsing AI to boost productivity for developers
Using AI to boost productivity for developers
 
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
Proofreading- Basics to Artificial Intelligence Integration - Presentation:Sl...
 
ICT role in 21st century education and it's challenges.pdf
ICT role in 21st century education and it's challenges.pdfICT role in 21st century education and it's challenges.pdf
ICT role in 21st century education and it's challenges.pdf
 
Uncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac FolorunsoUncommon Grace The Autobiography of Isaac Folorunso
Uncommon Grace The Autobiography of Isaac Folorunso
 
Abortion Pills Fahaheel ௹+918133066128💬@ Safe and Effective Mifepristion and ...
Abortion Pills Fahaheel ௹+918133066128💬@ Safe and Effective Mifepristion and ...Abortion Pills Fahaheel ௹+918133066128💬@ Safe and Effective Mifepristion and ...
Abortion Pills Fahaheel ௹+918133066128💬@ Safe and Effective Mifepristion and ...
 
ECOLOGY OF FISHES.pptx full presentation
ECOLOGY OF FISHES.pptx full presentationECOLOGY OF FISHES.pptx full presentation
ECOLOGY OF FISHES.pptx full presentation
 
Digital collaboration with Microsoft 365 as extension of Drupal
Digital collaboration with Microsoft 365 as extension of DrupalDigital collaboration with Microsoft 365 as extension of Drupal
Digital collaboration with Microsoft 365 as extension of Drupal
 
BEAUTIFUL PLACES TO VISIT IN LESOTHO.pptx
BEAUTIFUL PLACES TO VISIT IN LESOTHO.pptxBEAUTIFUL PLACES TO VISIT IN LESOTHO.pptx
BEAUTIFUL PLACES TO VISIT IN LESOTHO.pptx
 
Ready Set Go Children Sermon about Mark 16:15-20
Ready Set Go Children Sermon about Mark 16:15-20Ready Set Go Children Sermon about Mark 16:15-20
Ready Set Go Children Sermon about Mark 16:15-20
 
History of Morena Moshoeshoe birth death
History of Morena Moshoeshoe birth deathHistory of Morena Moshoeshoe birth death
History of Morena Moshoeshoe birth death
 
BIG DEVELOPMENTS IN LESOTHO(DAMS & MINES
BIG DEVELOPMENTS IN LESOTHO(DAMS & MINESBIG DEVELOPMENTS IN LESOTHO(DAMS & MINES
BIG DEVELOPMENTS IN LESOTHO(DAMS & MINES
 
lONG QUESTION ANSWER PAKISTAN STUDIES10.
lONG QUESTION ANSWER PAKISTAN STUDIES10.lONG QUESTION ANSWER PAKISTAN STUDIES10.
lONG QUESTION ANSWER PAKISTAN STUDIES10.
 
Introduction to Artificial intelligence.
Introduction to Artificial intelligence.Introduction to Artificial intelligence.
Introduction to Artificial intelligence.
 
in kuwait௹+918133066128....) @abortion pills for sale in Kuwait City
in kuwait௹+918133066128....) @abortion pills for sale in Kuwait Cityin kuwait௹+918133066128....) @abortion pills for sale in Kuwait City
in kuwait௹+918133066128....) @abortion pills for sale in Kuwait City
 
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdfSOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
SOLID WASTE MANAGEMENT SYSTEM OF FENI PAURASHAVA, BANGLADESH.pdf
 
Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...
Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...
Jual obat aborsi Jakarta 085657271886 Cytote pil telat bulan penggugur kandun...
 
Call Girls Near The Byke Suraj Plaza Mumbai »¡¡ 07506202331¡¡« R.K. Mumbai
Call Girls Near The Byke Suraj Plaza Mumbai »¡¡ 07506202331¡¡« R.K. MumbaiCall Girls Near The Byke Suraj Plaza Mumbai »¡¡ 07506202331¡¡« R.K. Mumbai
Call Girls Near The Byke Suraj Plaza Mumbai »¡¡ 07506202331¡¡« R.K. Mumbai
 
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdfAWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
AWS Data Engineer Associate (DEA-C01) Exam Dumps 2024.pdf
 

Matreshka.js