EmberJS - Classes e instâncias

Isso nada mais é do que atualizar a implementação da classe sem redefini-la e reabrir a classe especificando novas propriedades nela. Isso é possível usando os seguintes métodos -

  • reopen()- Adiciona propriedades e métodos às instâncias .

  • reopenClass()- Adiciona propriedades e métodos às classes. .

Exemplo

O exemplo a seguir usa os métodos mencionados acima e especifica as novas propriedades ou métodos nele -

import Ember from 'ember';

export default function() {
   //reopen() method for instances
   var Person = Ember.Object.extend ({
      firstName: null,
      lastName:  null,
   });

   //adding new variable to the Person class
   Person.reopen ({
      middleName: 'Smith',
   });

   document.write('Middle Name: '+Person.create().get('middleName'));
   document.write("<br>");

   //reopenClass() method for classes
   Person.reopenClass ({
      //creating new function for class Person
      openClass: function() {
         return Person.create({isMan: true});
      }
   });

   document.write('isMan: '+Person.openClass().get('isMan'));
}

Agora abra o arquivo app.js e adicione a seguinte linha no topo do arquivo -

import reopenclass from './reopenclass';

Onde, reopenclass é um nome do arquivo especificado como "reopenclass.js" e criado na pasta "app".

Em seguida, chame o "reopenclass" herdado na parte inferior, antes da exportação. Ele executa a função reopenclass que é criada no arquivo reopenclass.js -

reopenclass();

Resultado

Execute o servidor ember e você receberá a seguinte saída -