Depois de aprender idiomas tradicionais orientados a objetos, como o Java C ++, fico um pouco desconfortável quando me transfiro para o JavaScript, especialmente a chamada função de objeto em JavaScript, que às vezes fico confuso. Por isso, simplesmente resolvi algumas coisas conceituais abaixo para facilitar o aprendizado e o entendimento e as explicarei em combinação com algum conhecimento orientado a objetos Java.
Vamos primeiro entender alguns conceitos:
1. Primeiro de tudo, o que o objeto se refere no ECMAScript? Existem 5 tipos de dados simples no ECMAScript: indefinido, nulo, booleano, número, string. Há também um tipo de dados complexo, ou seja.
2. Tipo de referência-o conceito de classe em java
Valor do tipo de referência --- O conceito de objetos em Java
3. Funções ---- o conceito de métodos em java
4.Var --- declara um operador de uma variável. Como a variável JS é do tipo solto, solta significa que ela pode ser usada para salvar qualquer dados. A variável é usada apenas para representar um espaço reservado; portanto, a variável não precisa especificar string, int e apenas var. Observe que o objeto pode ser declarado com var.
5.Object (), o que é --- o construtor do objeto em Java, o construtor do objeto em JS.
Objeto
O JS pode adicionar dinamicamente propriedades e métodos.
Por exemplo, crie uma instância de objeto
var obj = new Object();
A variável Obj é o objeto de novo objeto ().
Próximo:
var obj = new Object (); obj.name = 'zeng'; obj.age = 12; obj.fun = function () {console.log (this.name+this.age);}Mas isso não é muito encapsulado, então a representação literal do objeto é mais frequentemente usada
var obj = {nome: 'zeng', idade: 12, diversão: function () {console.log (this.name+this.age); }} obj.fun (); // Imprima: Zeng12Acesso às propriedades do objeto:
1. Use colchetes
console.log(obj["name"]);
2. Usar pontos, recomenda -se usar este método
console.log(obj.name );
função
As funções são uma parte importante de qualquer idioma. As funções são chamadas de JS. Você também pode entender que eles são os métodos Java e as funções da linguagem C, da mesma forma. No entanto, em termos de declaração e uso, as funções de JS podem ser muito diferentes.
Um exemplo de uma função:
function fun () {return "exemplo";} console.log (fun ()); // saída: 'Exemplo'Também é possível:
var FUN = function () {return "Crie funções usando expressões"}; console.log (fun ()); // saída: "Crie funções usando expressões"No exemplo acima, você notará que a função não possui nome de função, apenas um nome de variável divertido, e há outro no final da expressão; ponto e vírgula,
Você pode apenas entendê -lo como uma expressão que declara uma variável. Declarar outras variáveis é escrito assim:
var name = "Zeng"; // Existem nomes de variáveis e semicolons
Vamos dar um exemplo com parâmetros:
function fun () {retorna argumentos [0] + argumentos [1] + argumentos [2];} console.log (diversão ("isto é", "a", "exemplo")); // saída: "Este é um exemplo"Não é um pouco estranho? Primeiro de tudo, a função que criei não possui parâmetros. É fornecido parâmetros quando chamados e os parâmetros podem ser obtidos e retornados na função.
Na verdade, aqui precisamos afirmar que a função JS não se importa de passar em alguns parâmetros, nem se importa que tipo de parâmetros! O motivo é que os parâmetros de recepção interna da função são armazenados em uma matriz!
A matriz são os argumentos acima. Obviamente, a matriz não se importa em passar alguns parâmetros. Se houver parâmetros, adicionarei um e, se não houver parâmetros, eu irei nulo.
Podemos usar esse recurso como exemplo:
Sobrecarga de métodos de imitação-use parâmetros diferentes para realizar reações diferentes
function fun () {if (argumentos.Length == 1) {retornar argumentos [0]*10; } if (argumentos.length == 2) {return (argumentos [0]+argumentos [1])*10; } retornar 10;} console.log (diversão (11.111)); // retorna 1220! ! ! !Sem sobrecarga:
O exemplo acima é uma sobrecarga de funções de imitação. Por que eu preciso imitar isso? Em breve poderei criar várias funções com parâmetros diferentes.
function diversão (num1) {return "diversão com apenas um parâmetro"} função diversão (num1, num2) {return "diversão com dois parâmetros";} console.log (diversão (11)); // Saída "Fun com dois parâmetros"É claramente chamado de função com um parâmetro, mas é realmente executado com dois parâmetros. Motivo: o JS define duas funções com o mesmo nome, e o nome pertence apenas à função definida mais tarde! ! ! Portanto, não há recurso de sobrecarga no JS.
O nome da função é um ponteiro:
var FUN = function (num1, num2) {return num1+num2;}; var new_fun = diversão; diversão = null; // Defina a função como NullConsole.log (newfun (10,20)); // saída: 30console.log (diversão (10,20)); // Exceção: Fun não é uma funçãoPode -se observar que, embora divertido = nulo; antes disso var new_fun = diversão; isto é, o ponteiro também apontou para new_fun, para que a função new_fun () ainda possa ser executada, e o corpo da função não é anulado
As funções também podem ser usadas como valores:
function add (diversão, num) {return Fun (num);} função add_10 (num) {return num+10;} console.log (add (add_10,200)); // Saída: 210Pode ser explicado da seguinte maneira:
função add (função, parâmetro) {retorna função (parâmetro passado);}Os argumentos.Callee da função
Aqui está um exemplo recursivo
função diversão (num) {if (num <= 1) {console.log (num); retornar 1; } else {console.log (num); retornar num * argumentos.callee (num-1); }} console.log (diversão (3)); // Saída 6