uso de chamada ()

O método call () usa um valor especificado e um ou mais parâmetros para chamar uma função.

Observação: a sintaxe e a função desse método são semelhantes às do método apply (). A única diferença é que o método call () aceita uma lista de parâmetros, enquanto o método apply () aceita uma matriz contendo vários parâmetros.

Use o método call para chamar o construtor pai

Em um construtor filho, você pode implementar a herança chamando o método de chamada do construtor pai. No exemplo a seguir, as instâncias de objeto criadas usando os construtores Food e Toy terão o atributo name e o atributo price adicionados no construtor Product, mas o atributo category é definido em seus respectivos construtores.

function Product(name, price) {
    
    
  this.name = name;
  this.price = price;
}

function Food(name, price) {
    
    
  Product.call(this, name, price);
  this.category = 'food';
}

function Toy(name, price) {
    
    
  Product.call(this, name, price);
  this.category = 'toy';
}

var cheese = new Food('feta', 5);
var fun = new Toy('robot', 40);

console.log(cheese.name) // "feta"
console.log(fun.name) // "robot"

Use o método call para chamar funções anônimas

No loop for do exemplo a seguir, criamos uma função anônima e, em seguida, executamos a função anônima com cada elemento do array como o valor especificado chamando o método de chamada da função. O objetivo principal desta função anônima é adicionar um método de impressão para cada objeto de elemento de array.Este método de impressão pode imprimir o número de índice correto de cada elemento no array. Obviamente, não é necessário passar o elemento do array como o valor this para a função anônima (parâmetros normais são adequados), o objetivo é demonstrar o uso de call.

var animals = [
  {
    
     species: 'Lion', name: 'King' },
  {
    
     species: 'Whale', name: 'Fail' }
];

for (var i = 0; i < animals.length; i++) {
    
    
  (function(i) {
    
    
    this.print = function() {
    
    
      console.log('#' + i + ' ' + this.species
                  + ': ' + this.name);
    }
    this.print();
  }).call(animals[i], i);
}
//打印出:
// "#0 Lion: King"
// "#1 Whale: Fail"

Use o método call para chamar a função e especificar 'este' do contexto

No exemplo a seguir, quando o método greet é chamado, o valor this do método será vinculado ao objeto obj.

function greet() {
    
    
  var reply = [this.animal, 'typically sleep between', this.sleepDuration].join(' ');
  console.log(reply);
}

var obj = {
    
    
  animal: 'cats', sleepDuration: '12 and 16 hours'
};

greet.call(obj);  // cats typically sleep between 12 and 16 hours

Use o método call para chamar a função e não especifique o primeiro parâmetro (argumento)

No exemplo a seguir, chamamos o método display, mas não passamos seu primeiro parâmetro. Se o primeiro parâmetro não for passado, o valor deste será vinculado ao objeto global.

var sData = 'Wisen';

function display() {
    
    
  console.log('sData value is %s ', this.sData);
}

display.call();  // sData value is Wisen

Nota: No modo estrito, o valor deste será indefinido. do seguinte modo.

'use strict';

var sData = 'Wisen';

function display() {
    
    
  console.log('sData value is %s ', this.sData);
}

display.call(); // Cannot read the property of 'sData' of undefined

Acho que você gosta

Origin blog.csdn.net/weixin_42549581/article/details/113995635
Recomendado
Clasificación