es6

Object.freeze e Object.frozen – Javascript #2

No JavaScript conseguimos transformar todo objeto em um objeto imutável, para isso podemos usar a propriedade Object.freeze.  Ou seja, a partir do momento que é chamado o método no objeto não se pode adicionar propriedades, deletar propriedades, tampouco edita-las. Também conseguimos checar se um objeto está congelado através do método Object.isFrozen que retorna true caso o objeto tenha sido congelado pelo método Object.freeze.

let pessoa = {
  nome : "Guilherme",
  idade : 27
}

pessoa.idade ++;

console.log("Idade antes do freeze: " + pessoa.idade);

// Congela o objecto
Object.freeze(pessoa);

console.log("Objeto está congelado: " + Object.isFrozen(pessoa));

pessoa.idade ++;

console.log("Idade dps do freeze: " + pessoa.idade);

O código acima imprimirá:

“Idade antes do freeze: 28”
“Objeto está congelado: true”
“Idade dps do freeze: 28”

Ou seja, na primeira chamada ele incrementa a idade pois o objeto ainda é imutável, depois da congelarmos ele com o freeze tentamos novamente incrementar a idade, porém, sem sucesso pelo fato do objecto ja estar congelado.E o método frozen retorna true, pelo fato de já termos congelado o objeto.


Porque os dons e a vocação de Deus são sem arrependimento. Romanos 11:29

Anúncios

Object Assign – Javascript #1

Um dos métodos úteis da versão do ECMAScript 2015 (aka ES6) é  o método Object.assign(), com ele conseguimos copiar valores de propriedades de N objetos de origem para um objeto de destino.

A sintaxe é baseada em 2 parâmetros.

Object.assign(destino, ...origens)

Onde o primeiro parâmetro é o objeto de destino e o segundo é um array com as propriedades de objetos de origem.

Segue um exemplo de uso.

var o1 = { a: 1 };
var o2 = { b: 2 };
var o3 = { c: 3 };

var obj = Object.assign(o1, o2, o3);
console.log(obj); // { a: 1, b: 2, c: 3 }
console.log(o1);  // { a: 1, b: 2, c: 3 }

O bacana é a possibilidade de atrelar propriedades massivas em seu objeto.

Também é possível o uso do Object.assign() para clonar um objeto.

var obj = { a: 1 };

var copy = Object.assign({}, obj);

obj.a = 2;

console.log(copy, obj); 

/* 
Imprimirá 

[object Object] {
  a: 1
}
[object Object] {
  a: 2
}
*/

Detalhe importante : No IE 11 o método Object.assign não irá funcionar, para isso é possível usar alguns polyfills disponíveis em mercado. https://babeljs.io/docs/plugins/transform-object-assign/


Eu sararei a sua infidelidade, eu voluntariamente os amarei; porque a minha ira se apartou deles. Oséias 14:4

Feedback Leitura – Cangaceiro Javascript

rxiahuuvyefhy39kw2diszlgvuvkg87ylkgec5pytac_large

Feliz ano novo 🙂

Na última semana de 2017 conclui a leitura do livro Cangaceiro Javascript do Flavio Almeida.

Eu saí do mercado Java/PHP depois de 7 anos e comecei a trabalhar com Javascript, não que eu não mexia com JS antes, mas entrei a fundo no mercado Fullstack JS (NodeJS, Angular, React, MongoDB) e muito do que eu tinha de conhecimento (basicamente o ES5) estava obsoleto para os dias de hoje.

O livro do Cangaceiro me mostrou o quão podemos ir além com o JS e o quão ele está próximo das linguagens fortes de mercado com as mudanças do ES6-ES7. A forma como o autor ensina é fantástica, trazendo uma didática muito boa com bastante conteúdo interessante.

Recomendo a leitura, mesmo que você não tenha o JS como sua linguagem principal, vale a pena.


Não temas, quando alguém se enriquece, quando a glória da sua casa se engrandece. Salmos 49:16