2. • JavaScript is object based, everything in JS is an object
• Variables created using var
• You should always use semicolons, and an object is a collection of name/value
name: value
• JavaScript is case sensitive
• Always use strict mode, declared with “use strict”
Restrictions
Cannot use a variable without declaring it
starter
Cannot write to a read-only property
Cannot add properties to non-extensible objects
Cannot illegally delete functions and variables
Cannot define a property more than once in an object literal
Cannot use a parameter name more than once in a function
Cannot use reserved words, eval, or arguments, as names for functions and
variables
The value of this in a function is no longer the window object
Cannot declare functions inside of statements
Cannot change the members of the arguments array
3. • NULL
• One of the JavaScript primitive types
• Represents the absence of value
Null • Evaluates to false in Boolean expressions
and • UNDEFINED
• Primitive type
undefined • Represents an unknown value
• Returned when a non-existent object property is called
• Evaluates to false in Boolean expressions
4. Objects are only equal to themselves
Primitives are equal if the values match (“salvo” === “salvo”)
Two sets of equality operators ( == and ===)
Avoid coercive never use == or != INSTEAD of === or !==
equality operators 0 == '0';
0 === '0';
//true
//false
false == '0'; //true
false === '0'; //false
5. Top-level function
Simple way to test for numbers and failed mathematical
isNaN expressions
parseFloat method is helpful to convert a string in a number
7. The window object in browsers is a global namespace
Variables defined outside a function are in the global namespace
Variables defined without the var keyword are in the global namespace
Always create your own namespace by a pattern
The module pattern was made by Eric Miraglia of YUI in the 2007
Use it to prevent name collisions and polluting parent namespace
Keep everything tidy
Module Export Pattern:
Namespace var MODULE = (function () {
var my = {},
privateVariable = 1;
function privateMethod() {
// ...
}
my.moduleProperty = 1;
my.moduleMethod = function () {
// ...
};
return my;
}());
Anonymous Closures Pattern:
(function () {
// ... all vars and functions are in this scope only
// still maintains access to all globals
}());
8. We create a class in js by a pattern
Classes Use it to prevent name collisions and polluting parent namespace
Keep everything tidy
Use the new keyword to invoke the constructor
9. A function start with the keyword function
A function can have a name or not
A function can have parameters
The delimiters of the function are { }
A function can return a value, and that value can be itself
Cannot be overloaded!!!
Parameters not passed are setted undefined
Functions Function without parameters has a default param called
(arguments)
Is possible to have a function inside a function Closure
Functions have this
Every function has a property named prototype
Useful to add a new function to a “class”
11. http://en.wikipedia.org/wiki/Model_View_ViewModel
The Model View ViewModel (MVVM) is an architectural
pattern used in software engineering that originated
from Microsoft as a specialization of the presentation model
design pattern introduced by Martin Fowler.[1] Largely based on
the model–view–controller pattern (MVC), MVVM is targeted at
modern UI development platforms which support Event-driven
MVVM Pattern programming, such as HTML5,[2][3] Windows Presentation
Foundation(WPF), Silverlight and the ZK framework.
MVVM facilitates a clear separation of the development of
the graphical user interface (either as markup language or GUI
code) from the development of the business logic or back
end logic known as the model (also known as the data model to
distinguish it from the view model).