A principal coisa que quero resolver os seguintes problemas:
1. Qual é a diferença entre aplicar e chamar
2. Outros usos inteligentes da aplicação (geralmente em que circunstâncias podem ser aplicadas)
Encontrei as definições de aplicação e chamada da Internet e depois usei exemplos para explicar o significado desses dois métodos e como usá -los.
Aplicar: o método pode seqüestrar o método de outro objeto e herdar as propriedades de outro objeto.
O método function.Apply (OBJ, args) pode receber dois parâmetros
OBJ: Este objeto substituirá este objeto na classe de função
Args: Esta é uma matriz, será aprovada como um argumento para funcionar (args-> argumentos)
Chamada: significa o mesmo que aplicar, mas a lista de parâmetros é diferente.
Function.call (obj, param1, param2,…, paramn)
OBJ: Este objeto substituirá este objeto na classe de função
Params: esta é uma lista de parâmetros
Aplicar exemplo:
<script type = "text/javascript">/*define uma pessoa humana*/função (nome, idade) {this.name = name; this.age = Age;} /*Defina uma classe de estudante* /FunctionStudent (nome, idade, grau) {Person.Apply (isto, argumentos); this.grade=grade;}//Create a student class var student=new Student("qian",21,"First Grade");//Test alert("name:"+student.name+"/n"+"age:"+student.age+"/n"+"grade:"+student.grade);//You can see the test result name:qian age:21 grade: First grade //I did not assign values to name and age attributes in the student class. Por que esses dois atributos têm valores? Esta é a mágica de aplicar. </sCript>Análise: Person.Apply (isto, argumentos);
Isto: ao criar um objeto, ele representa o aluno
Argumentos: é uma matriz, que é ["Qian", "21", "Primeira Grau"];
Em outras palavras, em termos leigos, é: use o aluno para executar o conteúdo da classe de pessoa. Existem declarações como este. Nome em classe pessoal, para que os atributos sejam criados no objeto do aluno.
Ligue para o exemplo
Na função Studen, você pode modificar a aplicação ao seguinte:
Pessoa.Call (este, nome, idade);
a diferença
Ao fornecer parâmetros do objeto, se o formulário de parâmetro for uma matriz, por exemplo, os argumentos dos parâmetros serão passados no exemplo de aplicação, esse parâmetro é um tipo de matriz e, ao chamar a pessoa, a lista de parâmetros corresponde à mesma (ou seja, os dois primeiros dígitos da lista de parâmetros de pessoa e do aluno são consistentes), você pode usar. Se a lista de parâmetros da minha pessoa for assim (idade, nome) e a lista de parâmetros do aluno é (nome, idade, nota), isso pode ser alcançado chamando, ou seja, especificando diretamente a posição do valor correspondente da lista de parâmetros (Person.Call (este, idade, nome, grau));
Alguns outros usos inteligentes da aplicação
As pessoas cuidadosas podem ter notado que, quando chamo o método Aplicar, o primeiro parâmetro é o objeto (isso) e o segundo parâmetro é uma coleção de matriz.
Ao ligar para a pessoa, o que ele precisa não é uma matriz, mas por que ele me dá uma matriz, eu ainda posso analisar a matriz em um parâmetro,
Este é um uso inteligente do aplicativo. Você pode converter uma matriz em uma lista de parâmetros por padrão ([param1, param2, param3] em param1, param2, param3). Se usarmos o programa para implementar a implementação de substituir cada item na matriz por uma lista de parâmetros, pode demorar um pouco. Com a ajuda desse recurso da aplicação, temos o seguinte método eficiente:
a) Math.max pode alcançar o maior item da matriz
Porque o parâmetro Math.Max não suporta Math.max ([Param1, Param2]), ou seja, Array
No entanto, ele suporta math.max (param1, param2, param3 ...), para que você possa resolver o problema de var max = math.max.apply (null, matriz) com base no recurso de aplicar agora, para que você possa obter o maior item em uma matriz
(Aplicar substituirá um conjunto de matrizes por um parâmetro e o passará para o método após o outro)
Quando esta parte é chamada, o primeiro parâmetro recebe um nulo. Isso ocorre porque não há objetos para chamar esse método. Eu só preciso usar esse método para me ajudar a calcular e obter o resultado retornado. Então eu passei diretamente um nulo
b) Math.Min pode alcançar o menor item da matriz
Além disso, é o mesmo que Max
var min = Math.min.Apply (NULL, Array);
c) Array.prototype.push pode implementar a combinação de duas matrizes
O método push não fornece push uma matriz, mas fornece push (param1, param,… paramn) para que você também possa instalar e substituir a matriz aplicando, ou seja::
vararr1 = new Array ("1", "2", "3"); vararr2 = new Array ("4", "5", "6"); Array.prototype.push.apply (ARR1, ARR2);Também pode ser entendido dessa maneira, o ARR1 chama o método push e os parâmetros são substituídos aplicando o conjunto da matriz em um conjunto de listas de parâmetros.
O exposto acima é o entendimento completo da chave de entrada principal que o editor traz para você. Espero que todos possam apoiar o wulin.com ~