mozilla
Los resultados de tu búsqueda

    Function.prototype.call()

    Resumen

    Llama a una función con un valor this asignado y argumentos provistos de forma individual.

    NOTA: Mientras la sintaxis de esta función es casi identica a la función apply(), la diferencia fundamental es que call() acepta una lista de argumentos, mientras apply() accepta un arreglo unico de argumentos.

    Sintaxis

    fun.call(thisArg[, arg1[, arg2[, ...]]])

    Parametros

    thisArg
    El valor de this provisto por la llamada a fun. Note que este puede no ser el valor actual visto por el método: si el método es una función en código modo no estricto, null y undefined serán reemplazados con el objeto global, y serán almacenados valores primitivos.
    arg1, arg2, ...
    Argumentos para el objecto.

    Descripción

    Tú puedes asignar un objeto diferente this cuando llama a una función existente. this se refiere a el objeto actual, el objeto invocador.

    Con call, puedes escribir un método una vez y entonces heredarlo en otro objeto, sin tener que reescribir el método para el nuevo objecto.

    Examples

    Using call to chain constructors for an object

    You can use call to chain constructors for an object, similar to Java. In the following example, the constructor for the Product object is defined with two parameters, name and price. Two other functions Food and Toy invoke Product passing this and name and price. Product initializes the properties name and price, both specialized functions define the category.

    function Product(name, price) {
      this.name = name;
      this.price = price;
    
      if (price < 0)
        throw RangeError('Cannot create product "' + name + '" with a negative price');
      return this;
    }
    
    function Food(name, price) {
      Product.call(this, name, price);
      this.category = 'food';
    }
    Food.prototype = new Product();
    
    function Toy(name, price) {
      Product.call(this, name, price);
      this.category = 'toy';
    }
    Toy.prototype = new Product();
    
    var cheese = new Food('feta', 5);
    var fun = new Toy('robot', 40);
    

    Using call to invoke an anonymous function

    In this purely constructed example, we create anonymous function and use call to invoke it on every object in an array. The main purpose of the anonymous function here is to add a print function to every object, which is able to print the right index of the object in the array. Passing the object as this value was not strictly necessary, but is done for explanatory purpose.

    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);
    }
    

    See also

    Etiquetas y colaboradores del documento

    Contributors to this page: bluesky777, teoli
    Última actualización por: teoli,