Como en el título, cómo pasar todos los parámetros de un método de JavaScript al siguiente método, cómo realizar este paso, se puede usar cuando el código mueve ladrillos y es necesario reescribir el método, déjame contarte al respecto. aquí.
paso de parámetros
Tal vez escribas así, mira el siguiente código.
var _log = console.log;
console.log = function(a,b) {
if(b) return _log(a,b);
return _log(a);
};
Sin embargo, si encuentra una gran cantidad de parámetros de método, mire el siguiente código
var _log = console.log;
console.log = function(a,b,c,d,e,f,g...) {
//省略更多....
if(b && c) return _log(a,b,c);
if(b) return _log(a,b);
return _log(a);
};
¿Es necesario escribir muchas líneas? Si no es flexible, será muy agotador escribir así... Tengo un profundo conocimiento.
argumentos
Quizás, si has estado en contacto con él arguments
, deberías pensar en utilizarlo para ver si se puede realizar.
arguments
Es la matriz de lista de parámetros, puede saber cuántos parámetros se pasan,arguments.length
Indica el número de parámetros pasados.
Mirando el siguiente código, sé que no es bueno usarlo arguments
así, aunque ahorra if()
juicios de escritura, todavía queda mucho por escribir.
var _log = console.log;
console.log = function() {
switch(arguments.length){
//省略更多....
case 3:
return _log(arguments[0],arguments[1],arguments[2]);
case 2:
return _log(arguments[0],arguments[1]);
default:
return _log(arguments[0]);
}
};
método proxy
Escuché sobre proxy, así que pensé: ¿puede el método ser proxy? La respuesta es sí.
Mire un ejemplo, apply
el uso del agente, el código es el siguiente
var _log = console.log;
console.log = function() {
return _log.apply(this, arguments);
};
apply
Si el método no se utiliza correctamente劫持
, se producirán problemas de seguridad de los datos y será fácil de detectar. No se recomienda su uso.
Pasar parámetros directamente
Pase la lista de parámetros de un método al siguiente método, simplemente pase el parámetro directamente,
Mira un ejemplo, ...args
se refleja la utilidad de la función, el código es el siguiente
var _log = console.log;
console.log = function(...args) {
return _log(...args);
};
...args
Es el operador de extensión; tenga en cuenta que este uso solo se admite en ECMAScript ES6 y superiores.
He visto esto pero no me gusta...