Dois métodos são suportados na matriz JS, Shift () e Pop (), que se referem à exclusão de um valor da frente e do último lado de um dados e retornando o valor excluído. Você entenderá olhando para um exemplo:
A cópia do código é a seguinte:
var arr = ['s', 'o', 'f', 'i', 's', 's', 'h'];
arr.shift (); // retorna 's'
arr; // atualmente ['o', 'f', 'i', 's', 'h']
Arr.pop () // retorna 'H'
arr // atualmente ['o', 'f', 'i', 's']
É muito comum em muitas estruturas JS que um método fornece a você para passar vários parâmetros, e alguns desses parâmetros podem ser ignorados. Esses pontos insignificantes podem ser os primeiros ou os últimos. A maneira tradicional de escrever é determinar se os parâmetros existem ou o número de parâmetros para determinar o valor final.
Aqui, podemos usar o objeto de argumentos da função, bem como mudar e aparecer na matriz para obter aplicativos flexíveis.
1. Use o turno
Como implementar um método .bind (), que a API FN seja a seguinte:
A cópia do código é a seguinte:
// O escopo do FN é limitado a objeto
// Exceto para objeto, todos os parâmetros dos métodos de ligação serão passados para FN
fn.bind (objeto, param1, param2, [, paramn]);
Veja um exemplo primeiro. Obviamente, este exemplo pode ser mais importante para a aplicação de chamada e aplicação. No entanto, o que queremos falar é a aplicação do turno:
A cópia do código é a seguinte:
// [`.bind`] (http://www.prototypejs.org/api/function/bind) Método do prototype.js
Function.prototype.bind = function () {
var fn = this,
args = array.prototype.slice.call (argumentos),
objeto = args.shift ();
Return function () {
retornar fn.Apply (objeto,
args.concat (Array.prototype.slice.call (argumentos)));
};
};
Podemos usar o Shift para o objeto Argumentos (objeto semelhante a uma matriz, que precisa ser convertido em uma matriz real) para retirá-lo. Por exemplo, esse método os usa principalmente para separar o objeto como escopo e, em seguida, passa inteligentemente a matriz de parâmetros restantes para FN, ou seja, chamar a função que queremos limitar o escopo do objeto.
2. Use pop
Recentemente, estamos experimentando o SEAJS, vamos tomar uma de suas APIs como exemplo:
A cópia do código é a seguinte:
Definir (id, dependências, retorno de chamada)
Isso define a API, o ID e as dependências de um módulo podem ser omitidos. Aqui, como implementar esse suporte? Se você usar se para julgar, você realmente precisa se (argumentos === 1) {...} elseif ... muitos deles. Obviamente, isso às vezes tem benefícios (?, Pense nisso). Aqui, podemos usar o POP para facilitar a implementação de tal suporte:
A cópia do código é a seguinte:
var define = function () {
// Retire este retorno de chamada
var args = [] .slice.call (argumentos)
fn = args.pop ();
// Faça outras coisas mágicas
fn.Apply (nulo, args)
// ...
},
retorno de chamada = function () {
var args = argumentos, i = 0, len = args.length;
if (len === 0) console.log ('apenas um retorno de chamada');
para (; i <len; i ++) {
console.log (args [i]);
}
}
// Confira os resultados da execução dos três
definir (retorno de chamada);
define ('existem dois parâmetros', retorno de chamada);
define ('existem três parâmetros', 'Hello World', retorno de chamada);
Dois dias atrás, eu costumava citar algo quando usava alguns truques no JS. Embora eu sempre me peça para não ficar muito imerso no código, o código, não apenas JS, sempre nos dá muito divertidos. Como não gostar. Ha ha.