Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Javascript para adultos

Javascript para adultos

Tech Talk realizada na Netshoes, palestra no 17º Encontro Locaweb e TDC.

Abordando assuntos de nível intermediário/avançado sobre Javascript.

Escopo
Hoisting
Closures
Constructors & Prototypes
Link entre objetos
Como o "this" funciona
Objetos por referência

Mauricio Soares

February 05, 2015
Tweet

More Decks by Mauricio Soares

Other Decks in Programming

Transcript

  1. • Escopo • Hoisting • Closures • Constructors + Prototypes

    • Link entre objetos • Como o “this" funciona? • Objetos por referência
  2. var globalVar = true; function escopo1() { var localVar =

    true; } escopo1(); console.log(localVar); // Reference Error
  3. var globalVar = true; function escopo1() { var localVar =

    true; function escopo2() { var localVar = false; console.log(localVar); // false } console.log(localVar); // true }
  4. $('a').on('click', function() { console.log($); }); // Click no botão //

    Logs: jQuery $ = undefined; // Click no botão // Logs: undefined
  5. function Pessoa() {} Pessoa.prototype.falar = function(frase) { return frase; }

    var mauricio = new Pessoa(); mauricio.falar('Hello World'); // Hello World
  6. Quando um objeto é criado, um link é feito entre

    esse objeto e o prototype do constructor
  7. var obj = { prop: 90, method: function() { (this

    === obj); // true return this.prop; } }; obj.method(); // 90 Método de um objeto
  8. function Pessoa(nome) { this.nome = nome; } Pessoa.prototype.falarNome = function()

    { return 'Meu nome é: ' + this.nome; }; var mauricio = new Pessoa('Mauricio'); mauricio.falarNome(); // 'Meu nome é: Mauricio';
  9. "this" aponta para o próprio objeto instanciado, portanto tudo que

    é atribuído a ele não é compartilhado entre outras instancias.
  10. function Pessoa(nome) { this.nome = nome; this.falarNome = function() {

    return 'Meu nome é: ' + this.nome; } } var mauricio = new Pessoa('Mauricio'); mauricio.falarNome(); // 'Meu nome é: Mauricio';
  11. var a = 1; var b = a; b =

    3; console.log(a); // 1
  12. var a = { foo: 1 }; var b =

    a; b.foo = 3; console.log(a.foo); // 3
  13. var a = { foo: 1 }; var b =

    Object.create(a); b.foo = 3; console.log(a.foo); // 1 Object.create
  14. • Escopo • Hoisting • Closures • Constructors + Prototypes

    • Link entre objetos • Como o “this" funciona? • Objetos por referência