Dicas Javascript

Call vs Apply

suaFuncao.call(algumEscopo, arg1, arg2, ...)
suaFuncao.apply(algumEscopo, [arrayArgs])

Call os argumentos são definidos explicitamente e apply compõem um array. Prefira call, principalmente quando os valores já não estiverem em array.

Repassar arguments

function suaFuncao() {
    outraFuncao.apply(escopo, Array.prototype.slice.call(arguments));
}

Acessamos os valores pelo índice em arguments, porém ele não é um array e não pode ser repassado por apply.

Labeled

instrucao: {
    if (true)
        break instrucao;
    alert('Nunca serei executado');
}

Labeled pode ser usado com break ou continue para interromper ou continuar um conjunto de instruções.

Classe

function Produto(nome, preco) {
    this.nome = nome;
    this.preco = preco;
    this.obterNome = function() {
        return this.nome;
    }
}

// instanciar
var prod = new Produto('Televisor', 2000);

Prototipo

Produto.prototype.obterPreco = function() {
    return this.preco;
};

Métodos e propriedades adicionadas no protótipo também adicionados nas instâncias.

toString

Produto.prototype.toString = function() {
    return this.nome + ' ' + this.preco;
};

O método toString é invocado sempre que o objeto participar de um contexto string.

Sempre instância

function teste() {
    if (this.contructor != teste)
        return new teste;

    this.metodo = function() {};
}

// ambos retornam uma instância
var a = new teste,
    b = teste();

Remover vários itens do array

for (var i = array.length; i--;)
    if (array[i] == some_condition)
        array.splice(i, 1);

Escolher um item aleatório do array

array[Math.floor(Math.random() * array.length)];

Regexp de uma string

var str = 'a-z';
str += '0-9';
var re = new RegExp('[' + str + ']');

RegExp cria objeto expressão regular a partir de string.

Número aleatório

function rand(min, max) {
	return Math.floor(Math.random() * (max - min + 1)) + min;
}

You may also like...