Este artigo descreve os recursos avançados da programação orientada a objetos no JavaScript. Compartilhe -o para sua referência, como segue:
1. Três maneiras de criar objetos:
O primeiro método de construção: novo objeto
var a = new Object (); ax = 1, ay = 2;
O segundo método de construção: medição direta do objeto
var b = {x: 1, y: 2};O terceiro método de construção: defina o tipo
ponto de função (x, y) {this.x = x; this.y = y;} var p = novo ponto (1,2);2. Acesse o objeto
Acesse as propriedades do objeto
Notação de suporte: herói ['nome']. , Assim,
Notação de ponto: Hero.name.
Se a propriedade acessada não existir, indefinido será devolvido.
Métodos para acessar objetos
Adicione um par de colchetes após o nome do método: Hero.Say ().
Um método de acesso como atributo de acesso: herói ['say'] ().
3. Excluir atributos e métodos
// Crie um objeto vazio var herói = {}; // Adicione atributos e métodos a hero.name = "javascript"; hero.value = "helloworld"; hero.sayName = function () {return "hello" + Hero.name;}; // Test AlerT (Hero.Name); // saída javascriptalert (hero.sayname ()); // saída Hello javascript // exclua o atributo de nome do objeto Hero excluir hero.name; // alerta de teste (hero.sayName ()); // Saída Olá, indefinido4. Use este valor
// Crie um objeto vazio var herói = {}; // Adicione atributos e métodos ao objeto herói hero.name = "javascript"; hero.value = "helloworld"; hero.sayname = function () {return "hello" + this.name;}; // test (hero.name); // saída javascripttalet (hero.sayname ()); // Saída Hello JavaScriptResumir:
① Isso aqui realmente se refere a "este objeto" ou "objeto atual".
② O uso disso é um problema para a maioria das pessoas. Portanto, não é recomendável usar muito!
5. Objetos internos
Objetos embutidos podem ser divididos aproximadamente em três grupos:
① Objetos da classe de encapsulamento de dados - incluindo objeto, matriz, booleano, número e string. Esses objetos representam diferentes tipos de dados em JavaScript e todos têm seus próprios tipos de retorno diferentes, além de estados indefinidos e nulos.
② Objetos da classe de ferramentas - incluindo objetos usados para fornecer travessias, como matemática, data, regexp, etc.
③ Objetos da classe de erro - incluindo objetos gerais de erro e vários outros objetos de classe de erro mais especiais. Eles podem nos ajudar a corrigir o estado de trabalho do programa quando ocorrerem certas exceções.
6. Objeto de objeto
Objeto é o objeto pai de todos os objetos no JavaScript, o que significa que todos os objetos são herdados do objeto.
Crie um objeto vazio:
var object = {}; var obj = new Object ();7. Objeto de Anexo
Objetos de matriz são usados para armazenar vários valores em uma única variável.
Crie um objeto de matriz vazio:
var object = {}; var obj = new Array ();Por exemplo 1:
// Inverta o exemplo da string // Defina uma string var str = "a, b, c, d, e, f, g"; // use o método split () do objeto String para cortar a string em uma matriz var = str.split (","); // use o método reverso () do objeto de matriz para reverter a ordem dos elementos na matriz. arr = arr.Reverse (); // Test Print Alert (arr.toString ());8. Objeto de cordas
Diferenças entre objetos de string e tipos básicos de string:
var str = "hello"; var obj = new String ("mundo"); alerta (typeof str); // typeof stringalert (typeof obj); // Typeof ObjectPor exemplo 1:
// Exemplo de determinar se uma string contém uma string especificada // define duas strings a serem julgadas var str = "abcdefg"; var substittr = "efg";/** define a função para julgar se uma string contém uma string especificada * * Primeiro parâmetro: a string a ser julgada * Segundo parâmetro: a string a ser julgada */function * function * function *, a string (a sequência é julgada). String (str); // interceptar a string julgada var resultado = string.substr (str.indexOf (substr), substr.length);/** Determine se a string interceptada está vazia * * está vazia, indicando que a string especificada não contém a string especificada * * não é vazia, indicando que a string especificada */se (resultado == Substr) {true; false;}} alert (sub (str, substr));9. Prototipo
A função em si também é um objeto que contém métodos e propriedades. Agora, o que queremos estudar é outra propriedade do objeto de função - protótipo.
Adicionar métodos e propriedades usando protótipos
Reescrever propriedades do protótipo usando suas próprias propriedades
Estender objetos embutidos
Adicionar métodos e propriedades usando protótipos
Abaixo está para criar um novo objeto de função e definir algumas propriedades e métodos:
function herói (nome, cor) {this.name = name; this.color = cor; this.whatareyou = function () {return "eu sou um" + this.color + "" + this.name; }} var herói = new Hero ("JavaScript", "Red"); Alert (Hero.wHatareyou ()); // saída eu sou um javascript vermelhoAdicione algumas propriedades e métodos ao objeto de função do herói acima:
Hero.prototype.price = 100; hero.prototype.rating = 3; hero.prototype.getInfo = function () {return // Classificação de saída: 3, preço: 100O método acima também pode ser feito assim:
Hero.prototype = {Price: 100, Classificação: 3, getinfo: function () {return "Classificação:" + this.rating + ", preço:" + this.price; }};Reescrever propriedades do protótipo usando suas próprias propriedades
O que devo fazer se os próprios atributos do objeto forem iguais ao atributo de protótipo? A resposta é que os próprios atributos do objeto têm maior prioridade que os atributos do protótipo.
function hero () {this.name = "jScript";} hero.prototype.name = "javascript"; var herói = new herói (); alert (hero.name); // saída jscriptDelete hero.name; alert (hero.name); // Saída JavaScriptEstender objetos embutidos
// Adicione uma função para julgar o protótipo Array Object Array.prototype.inArray = function (color) {for (var i = 0, len = this.Length; i <len; i ++) {if (this [i] === Color) {return true; }} retornar false;} // Defina um objeto de matriz var a = ["vermelho", "verde", "azul"]; // alerta de teste (a.inArray ("vermelho")); //trUealert(a.inArray("yellow ")); //falso10. Herança
Se ambas as classes são do mesmo tipo de instância, existem algumas relações entre elas. Chamamos a relação generalizada entre os tipos da mesma instância de "herança".
A relação de herança contém pelo menos três significados:
① Instâncias de subclasses podem compartilhar métodos de classes parentais.
② As subclasses podem substituir os métodos da classe pai ou estender novos métodos.
③ Subclasses e classes pais são "tipos" de instâncias de subclasse.
Em JavaScript, "Herança" não é suportado. Ou seja, não há sintaxe herdada em JavaScript. Nesse sentido, o JavaScript não é uma linguagem direta orientada a objetos.
11. Cadeia de protótipo
A cadeia de protótipo é o método de herança padrão formulado pelo padrão ECMAScript.
Por exemplo:
função a () {this.name = "a"; this.toString = function () {return this.name};} função b () {this.name = "b";} função c () {this.name = "c"; this.age = 18; this.getage = function (a) {this.Age};Explicação:
O objeto é criado diretamente na propriedade Prototype do objeto B e não estende o protótipo original desses objetos.
Uma nova entidade é criada através de novos a () e depois usada para substituir o protótipo do objeto.
JavaScript é uma linguagem que se baseia inteiramente em objetos, e não há conceito de classe.
Portanto, é necessário criar diretamente uma entidade com a nova () antes do trabalho de herança relevante pode ser concluído através das propriedades da entidade.
Após concluir essa implementação de herança, qualquer modificação, reescrita ou exclusão de A () não afetará B ().
Herdado apenas do protótipo:
função a () {} a.prototype.name = "a"; a.prototype.toString = function () {return this.name}; função b () {} b.prototype = a.prototype; b.prototype.name = "b"; função c () {} c.Protype = b.totyTyTyType.name = "b"; = 18; c.prototype.getage = function () {return this.age};Herança entre objetos (conteúdo estendido, não pode ser) (cópia rasa)
// A função aceita um objeto e retorna sua função de cópia ExtendCopy (p) {var z = {}; // Defina um objeto vazio z para (var i em p) {// var i = 0; i <p. comprimento; i ++ z [i] = p [i]; // Se você for tratado como uma matriz, poderá entender} // atributo uber: use p como pai de z e ponto z para o protótipo de p z.Uber = p; retornar z;} // define o objeto A, mas o objeto A não é um objeto de função var a = {name: "a", tostr: function () {return this.name;}} // define o objeto b, mas o objeto b não é um objeto de função var b = extendCopy (a); b.Name = "b"; b.tostr = function () {return this.uber.tostr () + "," + this.name;}; // define o objeto c, mas o objeto c não é um objeto de função var c = extendCopy (b); c.name = 18; alert (c.toStr ()); // Saída A, B, 18PS: Muitos layouts de código no tutorial não são padronizados. Aqui estão algumas ferramentas de formatação e embelezamento de código JavaScript para todos usarem:
Ferramenta de formatação de código JavaScript:
http://tools.vevb.com/code/js
Ferramentas de embelezamento/formatação/formatação/criptografia JavaScript Code:
http://tools.vevb.com/code/jscompress
Ferramenta de compactação JSMIN Online JS:
http://tools.vevb.com/code/jsmincompress
Para obter mais informações sobre o JavaScript, verifique os tópicos especiais deste site: "Javascript Orientado a objetos tutorial", "Resumo das habilidades de operação JSON em JavaScript", "Resumo dos efeitos de comutação de javascripts, SOBTILHET EFEITOS DE JAVUGO, SOBTILHAT EFFSEFTILIFICAÇÕES DO JAVELCRATSCRINCT" Skills Skills, "Summary of JavScripts Cripts Special Techniples e" "Resumo das estruturas de dados JavaScript e habilidades de algoritmo", "Resumo dos algoritmos e técnicas de travessia de JavaScript" e "Resumo do uso de operações matemáticas de JavaScript"
Espero que este artigo seja útil para a programação JavaScript de todos.