English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
métodoé um objeto, ou uma função associada, uma método é um objeto que é uma propriedade de uma função.
A definição de métodos é feita da mesma forma que a de funções convencionais, a diferença é que eles devem ser atribuídos como propriedades do objeto.
Para recuperar métodos do objeto, você os chama da mesma forma que uma função convencional, apenas adicionando ao variável do objeto.
// Criação de objetos var user = { firstName: "Seagull", lastName: "an", age: 22, location: "New Delhi", getName: function() { return this.firstName + "" + this.lastName; } ; //Acessar o método getName() user.getName();Teste veja‹/›
Se você acessar o método sem os parênteses (), ele retornará a definição da função:
user.getName;Teste veja‹/›
O JavaScript tem um keyword especial chamado this, que você pode usar em métodos para se referir ao objeto atual.
Você pode ter notado que nossos métodos são um pouco estranhos. Vamos usar este como exemplo:
getName: function() { return this.firstName + "" + this.lastName; }
O keyword this se refere ao objeto atual no qual o código foi escrito.-Portanto, neste caso, this é equivalente auser.
Dessa forma, this.firstName representaEste objetona propriedade firstName.
Você pode encontrarPalavras-chave JSTutorialno JSObtenha mais informações sobre o keyword this.
Para adicionar um novo método a um objeto, você pode usar o operador de atribuição (=) para atribuir uma nova função ao atributo.
Este exemplo adiciona o método "greet" ao objeto usuário:
user.greet = function() { return "Hello World"; ;Teste veja‹/›
ECMAScript 5(2009) introduziu Getters e Setters.
getter é um método para obter um valor específico de atributo.
setter é um método para definir um valor específico de atributo.
Você pode definir getters e setters em qualquer objeto nuclear pré-definido ou objeto definido pelo usuário que suporte a adição de novos atributos.
Este exemplo usa get locAtributo comolocationValor do atributo:
//Criação de um objeto var user = { firstName: "Seagull", lastName: "Anna", age: 22, location: "New Delhi", get loc() { return this.location; } ; //Exibe dados do objeto document.getElementById("para").innerHTML = user.loc;Teste veja‹/›
Este exemplo usa set locAtributo comolocationValor do atributo:
// Criação de objetos var user = { firstName: "Seagull", lastName: "Anna", age: 22, location: "New Delhi", set loc(x) { this.location = x; } ; // Uso de setters para definir atributos do objeto user.loc = "Goa"; // Exibe dados do objeto document.getElementById("para").innerHTML = user.location;Teste veja‹/›
Os dois exemplos a seguir mostram a diferença entre function e getter:
//Criação de objetos var user = { firstName: "Seagull", lastName: "Anna", age: 22, location: "New Delhi", fullName: function() { return this.firstName + "" + this.lastName; } ; // Exibe dados do objeto document.getElementById("para").innerHTML = user.fullName();Teste veja‹/›
// Criação de objetos var user = { firstName: "Seagull", lastName: "Anna", age: 22, location: "New Delhi", get fullName() { return this.firstName + "" + this.lastName; } ; //Exibe dados do objeto document.getElementById("para").innerHTML = user.fullName;Teste veja‹/›
Exemplo1 Tome fullName comoFunçãoAcesso: user.fullName().
Exemplo2 Tome fullName comoAtributoAcesso: user.fullName.
Uso de getters e setters:
Fornece uma sintaxe mais simples
Permite a sintaxe de atributos e métodos idêntica
Garante uma melhor qualidade de dados
É muito útil para o processamento backend
O método Object.defineProperty() também pode ser usado para adicionar getters e setters.
Object.defineProperty(object, property, {value : value})
Vamos usar o objeto "contador" como exemplo:
var counter = {i : 0}; Object.defineProperty(counter, "increment", { get: function() {this.i++;} }); Object.defineProperty(counter, "decrement", { get: function() {this.i--;} }); Object.defineProperty(counter, "reset", { get: function() {this.i = 0;}, }); Object.defineProperty(counter, "add", { set: function (value) {this.i += value;} }); Object.defineProperty(counter, "subtract", { set: function (value) {this.i -= value;} }); counter.reset; counter.add = 25; counter.increment;Teste veja‹/›