Conceptos básicos
10.0 === 10
parseInt('not a number');
isNaN()
'A' === '\u0041'
var str="My name is John!";
var n=str.replace("John","Peter");
// "My name is Peter!"
var str = 'The rain in SPAIN stays mainly in the plain';
var n = str.match(/ain/g);
// [ 'ain', 'ain', 'ain' ]
var str = "How are you doing today?";
var n = str.split(" ");
// ['How','are','you','doing','today?']
var text = 'and it he says "Any damn fool could'
var a = text.slice(18)
// '"Any damn fool could'
text.slice(0,3)
// 'and'
var empty = [];
var numbers = ['one','two','three','four','five'];
numbers[1]
numbers.length
var numbers_object = {'0': 'one', '1': 'two', '2': 'three', '3': 'four', '4': 'five'};
var etc = ['string', 0.5, true, false, null, undefined, ['nested', 'array'], {object: true}, NaN, Infinity];
etc.length?
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.push("Kiwi")
Banana,Orange,Apple,Mango,Kiwi
fruits.pop();
Banana,Orange,Apple
var fruits = ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango'];
var citrus = fruits.slice(1,3);
Orange,Lemon
fruits.splice(2,1,'Peach','Kiwi');
Lemon
'Banana','Orange','Peach','Kiwi','Apple','Mango' // fruits
<input type="text" id="foo-input" value="1">
var foo = 0;
foo = document.getElementById("foo-input").value;
if ( foo === 1 ) {
alert('woho!');
}
var foo = 0;
foo = +document.getElementById("foo-input").value;
if ( foo === 1 ) {
alert('woho!');
}
var number = 1,
string = "1",
bool = false;
number + ""; // '1'
+string; // 1
+string++; // 1
string; // 2
+bool; // 0
bool + ""; // 'false'
var number = 1,
string = "1",
bool = false;
string === number; // false
string === number + ""; // true
+string === number; // true
bool === number; // false
+bool === number; // true
bool === string; // false
bool === !!string; // true
Ciudadanos de primer orden
var obj = { nombre: "Pepito", saludo: function () { return "Hola, Mundo!"; } };
var foo = function() { this.name = 'John'; }
$("#elemento").click(function() { alert('Woho!'); });
function what(obj, fn) { return function() { return fn.apply(obj, arguments); } }
De forma directa
(function() {
alert("Hey!");
})();
var foo = function() {
alert('Hey!');
}
foo();
Enviando un mensaje a un objeto (método)
objeto.metodo();
Como constructor
new MiConstructor();
Indirectamente (call, apply)
fn.call({}, "param");
Literal
var obj = {
hola: true,
adios: true
};
Dinámica
var obj = {};
obj.nuevaPropiedad = 1;
Constructor
var Foo = function() {
this.a = 1;
}
var fooObj = new Foo()
Acceso a parámetros
var user = {
name: 'John',
'e-mail': 'john@mail.com'
}
user.name;
user['e-mail'];
Mensajes
var obj = {
nombre: 'Pepito',
saludo: function () {
return 'Hola, ' + this.nombre + '!';
}
};
obj.nombre; // 'Pepito'
obj.saludo; // function
obj[“saludo”](); // 'Hola, Pepito!'
var fn = obj["saludo"];
fn(); // 'Hola, undefined!'
var fn = obj.metodo;
fn();
obj.metodo();
var nombre = "Sonia";
var obj = {
nombre: "Pepito",
saludo: function() {
alert("hola " + this.nombre);
}
}
obj.saludo();
var fn = obj["saludo"];
fn();
var nombre = "Sonia";
var obj = {
nombre: "Pepito",
saludo: function([this]) {
[var that = this]
var saludo_fn = function([this]) {
alert("hola " + this.nombre);
};
saludo_fn([objeto global]);
[saludo_fn.call(this);]
}
};
obj.saludo([obj]);
var foo = function() {
var a = 3, b = 5;
var bar = function() {
var b = 7, c = 11; // a = 3, b = 7 c = 11
a += b + c; // a = 21, b = 7 c = 11
} // a = 3, b = 5 c = undefined
bar() // a = 21, b = 5 c = undefined
}
function makeContador() {
var i = 0;
return function() {
return i++;
}
}
var contador1 = makeContador();
contador1(); // 0
contador1(); // 1
var contador2 = makeContador();
contador2(); // 0