Causa
Eu usei prototype.js naquele dia, então abri -o para ver que vi algumas linhas e nebuloso.
Fragmento de código propotype.js
O código é o seguinte:
var class = {
Criar: function () {
Return function () {
this.initialize.Apply (isto, argumentos);
}
}
}
// O método de uso da classe é o seguinte
var a = classe.create ();
A. Prototype = {
inicializar: função (v) {
este.
}
showValue: function () {
alerta (this.value);
}
}
var a = novo a ('helloord!');
a.
l inicialize?
O que o método L Aplicação faz?
L Variável de argumentos?
l Por que o método inicializar é executado após o novo A?
Encontre a resposta:
Segundo, o objeto de segmentação de JS
O que é inicializar?
É apenas uma variável, representando um método, e o uso é o construtor da classe.
A função específica é suportada pelo JS, então qual é o objeto de JS? O que é igual e diferente de Java?
Veja o código:
O código é o seguinte:
Copie o código do código da seguinte forma:
var className = function (v) {{
this.value = v;
this.getValue = function () {
Retornar este.value;
}
this.setValue = function (v) {
this.value = v;
}
}
Então, qual é a diferença entre as funções e as classes no JS?
De fato, é o mesmo.
como
O código é o seguinte:
Var objectName1 = new ClassName ("A");
Entre eles, o ObjectName1 é um objeto obtido após a execução do construtor de nome da classe, e isso na função ClassName refere -se ao objeto construído após o novo, então o ObjectName1 terá um atributo e dois métodos após o seguinte. Você pode chamá -los por meio disso:
O código é o seguinte:
objectName1.setValue ('' hello '');
Alert (objectName1.getValue ());
Alerta (objectName1.value);
Então
O código é o seguinte:
var objectName2 = ClassName ("b");
Então, o que ObjectName2 obtém? Obviamente, o valor de retorno do método, aqui ClassName é usado apenas como uma função comum (embora a primeira letra seja capitalizada). Mas não há valor de retorno no nome da classe anterior, então o objectName2 não será indifligido, então quem "b" dá? Não há objeto aqui, mas apenas executando esse método simplesmente, então este "B" é atribuído à janela do objeto que chama esse método.
var objectName2 = ClassName ("b");
Alerta (Window.Value);
Portanto, todas as funções no JS são as mesmas, mas o uso pode ser diferente (usado para construir objetos ou executar um processo).
Vamos voltar ao tema o que a inicialização está fazendo?
O código é o seguinte:
Copie o código do código da seguinte forma:
var class = {
Criar: function () {
Return function () {
this.initialize.Apply (isto, argumentos);
}
}
}
var a = classe.create ();
Este código é para construir uma cópia de função para A, esta função é
O código é o seguinte:
Copie o código do código da seguinte forma:
Function () {
this.initialize.Apply (isto, argumentos);
}
E o último método é usado para criar um construtor. Ao usar esse construtor para construir um objeto, ele permitirá que o método inicial () da variável inicialize do construtor executado o método Apply (). Dessa forma, ele será contatado quando objetos inicializados (como entrar em contato com a aplicação).
Então
O código é o seguinte:
Copie o código do código da seguinte forma:
A.Prototype = {
inicializar: função (v) {
este.
}
showValue: function () {
alerta (this.value);
}
}
O que isso significa?
Protótipo significa "protótipo". A é uma função (), então A. O protótipo é uma variável na função, que na verdade é um objeto. Que método esse objeto possui, então qual método o objeto gerado pela função?
var a = novo a ('helloord!');
a.
Portanto, o objeto A também terá um método inicializado. '), Initialize voltou para chamar o método Aplicar. Este é o método de chamar uma inicialização.
3. Ligue para () e aplique ()
Vamos começar a estudar Aplicar (), encontrar algumas informações on -line e combinar sua própria pesquisa para entender as funções de Call () e aplicar ().功能基本一样 , function (). Call (objeto, {}, {} ……) 或者 function (). Aplicar (objeto, […])) 的功能就是对象 Objeto 调用这里的 funciton () , 不同之处是O parâmetro de chamada é passado para funcitar a partir do segundo. O aplicativo possui apenas dois parâmetros, e o segundo é uma matriz, que armazena todos os parâmetros passados para funções.
this.initialize.Apply (isto, argumentos);
O que isso significa?
O primeiro aqui refere -se ao objeto gerado depois de chamar o construtor com uma nova chamada, que é a A anterior, e é claro que o segundo deve se referir ao mesmo objeto. Então essa frase é essa (ou seja, a) chamar o método inicialize, e o parâmetro é um objeto de argumentos (o número da matriz dos parâmetros).
Então, como passar os parâmetros do método inicializar?
Quarto, objeto de argumentos
Este código pode explicar tudo:
O código é o seguinte:
Copie o código do código da seguinte forma:
function test () {
Alerta (tipo de argumentos);
for (var i = 0; i <argumentos.length; i ++) {
Alerta (argumentos [i]);
}
}
teste ("1", "2", "3");
teste ("a", "b");
Após a execução, alerta (tipoof argumentos); Em seguida, jogue 1, 2 e 3 por sua vez. Explique que os argumentos são a matriz sólida de chamar a função.
O código é o seguinte:
Copie o código do código da seguinte forma:
var class = {
Criar: function () {
Return function () {
this.initialize.Apply (isto, argumentos);
}
}
}
Os argumentos são a gama sólida do construtor devolvido por criar, então
var a = novo a ('helloord!');
No momento de 'Hellooword!'