Función de encapsulación secundaria [JavaScript]

1. Utilice aplicar para llamar a una función

Descripción del Título

Implemente la función callIt y cumpla las siguientes condiciones después de llamar a
1. El resultado devuelto es el resultado después de llamar a fn
2. El parámetro de llamada de fn son todos los parámetros después del primer parámetro de callIt
Ejemplo 1
Entrada

Sin
salida

No

Debido a que los argumentos no son matrices reales, para obtener todos los parámetros después del primer parámetro de callIt, no puede usar directamente el método de corte para interceptar, primero debe convertir los argumentos en una matriz real. Hay dos métodos comunes, uno es usar el método slice: var args = Array. Prototype. Slice. Call (argumentos); el otro es recorrer y completar el nuevo arreglo uno por uno. Después de obtener los argumentos, puede llamar a aplicar para ejecutar los parámetros de función pasados.
el código se muestra a continuación:

function callIt(fn) {
    
    
    //将arguments转化为数组后,截取第一个元素之后的所有元素
    var args = Array.prototype.slice.call(arguments,1);
    //调用fn
    var result = fn.apply(null,args);
    return result;
}

Dos. Función de embalaje secundaria

Implemente la función ParticalUsingArguments y cumpla las siguientes condiciones después de llamar:
1. Devolver un resultado de función
2. Después de llamar a result, el resultado devuelto es consistente con el resultado de llamar a la función fn
3. Los parámetros de llamada de fn son todos parámetros después del primer parámetro de ParticularUsingArguments y Parámetros de llamada del resultado
Ejemplo 1

Entrada
ninguna

Salida
ninguna

Esta pregunta es un poco más complicada que la primera pregunta. Los argumentos no pueden ser interceptados directamente por el método de corte. Primero deben convertirse en una matriz. Var args = Array.prototype.slice.call (argumentos); el método concat puede usarse para fusionar los parámetros, y los argumentos deben ser los primeros. Convierta a una matriz para fusionar usando concat. La mayoría de los usos se aplican para ejecutar la función pasada.
el código se muestra a continuación:

function partialUsingArguments(fn) {
    
    
     //先获取p函数第一个参数之后的全部参数
     var args = Array.prototype.slice.call(arguments,1);
     //声明result函数
     var result = function(){
    
    
         //使用concat合并两个或多个数组中的元素
         return fn.apply(null, args.concat([].slice.call(arguments)));
     }
     return result;
 }

Supongo que te gusta

Origin blog.csdn.net/weixin_42345596/article/details/105060469
Recomendado
Clasificación