Dos métodos son compatibles con JS Array, Shift () y Pop (), que se refieren a eliminar un valor del frente y el último lado de un datos, y devolver el valor eliminado. Comprenderá mirando un ejemplo:
La copia del código es la siguiente:
var arr = [s ',' o ',' f ',' i ',' s ',' s ',' h '];
arr.hift (); // return 's'
arr; // Actualmente ['O', 'f', 'i', 's', 'h']
arr.pop () // return 'h'
arr // actualmente ['o', 'f', 'i', 's']
Es muy común en muchos marcos JS que un método le proporciona pasar varios parámetros, y algunos de estos parámetros pueden ignorarse. Estos puntos insignificantes pueden ser los primeros o el último. La forma de escribir tradicional es determinar si existen los parámetros o el número de parámetros para determinar el valor final.
Aquí, podemos usar el objeto de argumentos de la función, así como cambiar y estallar en matriz para lograr aplicaciones flexibles.
1. Use el cambio
Cómo implementar un método .bind (), deje que la API FN sea la siguiente:
La copia del código es la siguiente:
// El alcance de FN se limita al objeto
// Excepto para el objeto, todos los parámetros de los métodos de enlace se pasarán a FN
fn.bind (objeto, param1, param2, [, paramn]);
Mira un ejemplo primero. Por supuesto, este ejemplo puede ser más importante para la aplicación de llamadas y aplicar. Sin embargo, de lo que queremos hablar es la aplicación de Shift:
La copia del código es la siguiente:
// [`.bind`] (http://www.prototypejs.org/api/function/bind) de prototype.js
Function.prototype.bind = function () {
var fn = esto,
args = array.prototype.slice.call (argumentos),
objeto = args.hift ();
Función de retorno () {
devolver fn.apply (objeto,
args.concat (array.prototype.slice.call (argumentos)));
};
};
Podemos usar el cambio al objeto de argumentos (objeto similar a la matriz, que debe convertirse en una matriz real) para sacarlo. Por ejemplo, este método los usa principalmente para separar el objeto como alcance, y luego pasar hábilmente la matriz de parámetros restante a FN, es decir, llamar a la función que queremos limitar al alcance del objeto.
2. Use pop
Recientemente, estamos intentando SEAJS, tomemos una de sus API como ejemplo:
La copia del código es la siguiente:
Definir (ID, dependencias, devolución de llamada)
Esto define la API, ID y dependencias de un módulo se pueden omitir. Aquí, ¿cómo implementar este soporte? Si usa IF para juzgar, realmente necesita if (argumentos === 1) {...} elseif ... muchos de ellos. Por supuesto, esto a veces tiene beneficios (?, Piénselo). Aquí, podemos usar POP para facilitar la implementación de dicho soporte:
La copia del código es la siguiente:
var define = function () {
// saca esta devolución de llamada
var args = [] .slice.call (argumentos)
fn = args.pop ();
// Haz otras cosas mágicas
fn.apply (nulo, args)
// ...
},
callback = function () {
var args = argumentos, i = 0, len = args.length;
if (len === 0) console.log ('solo una devolución de llamada');
para (; i <len; i ++) {
console.log (args [i]);
}
}
// consulte los resultados de ejecución de los tres
definir (devolución de llamada);
definir ('hay dos parámetros', devolución de llamada);
Definir ('hay tres parámetros', 'Hello World', devolución de llamada);
Hace dos días, solía citar algo cuando usaba algunos trucos en JS. Aunque siempre me pido que no esté demasiado inmerso en el código, el código, no solo JS, siempre nos da demasiado diversión. Cómo no me gusta. Ja ja.