JSアレイ、Shift()およびPOP()で2つのメソッドがサポートされています。これは、データの前面と最後の側から値を削除し、削除された値を返すことを指します。例を見て理解するでしょう:
コードコピーは次のとおりです。
var arr = ['s'、 'o'、 'f'、 'i'、 's'、 's'、 'h'];
arr.shift(); // return 's'
arr; //現在['o'、 'f'、 'i'、 's'、 'h']
arr.pop()// return 'h'
arr //現在['o'、 'f'、 'i'、 's']
多くのJSフレームワークでは、メソッドがいくつかのパラメーターを渡すために提供することが非常に一般的であり、これらのパラメーターの一部は無視できます。これらの無視できるポイントは、最初または最後の点かもしれません。従来の執筆方法は、パラメーターが存在するかどうか、または最終値を決定するパラメーターの数を判断することです。
ここでは、関数の引数オブジェクトを使用し、柔軟なアプリケーションを実現するために配列のシフトとポップを使用できます。
1.シフトを使用します
.bind()メソッドを実装する方法、fn apiを次のようにします。
コードコピーは次のとおりです。
// FNの範囲はオブジェクトに限定されます
//オブジェクトを除き、バインドメソッドのすべてのパラメーターはFNに渡されます
fn.bind(object、param1、param2、[、paramn]);
最初に例を見てください。もちろん、この例は、通話と適用の適用にとってより重要な場合があります。しかし、私たちが話したいのは、シフトの適用です。
コードコピーは次のとおりです。
// [`.bind`](http://www.prototypejs.org/api/function/bind)method from prototype.js
function.prototype.bind = function(){
var fn =これ、
args = array.prototype.slice.call(arguments)、
object = args.shift();
return function(){
fn.applyを返す(オブジェクト、
args.concat(array.prototype.slice.call(arguments)));
};
};
shift to the argumentsオブジェクト(実際の配列に変換する必要がある配列のようなオブジェクト)に使用して、それを取り出すことができます。たとえば、このメソッドは主にそれらを使用してオブジェクトをスコープとして分離し、残りのパラメーター配列をFNに巧みに渡します。つまり、オブジェクトスコープに制限する関数を呼び出します。
2。ポップを使用します
最近、私たちはSeajsを試しています。そのAPIの1つを例にとらえましょう。
コードコピーは次のとおりです。
定義(id、依存関係、コールバック)
これにより、モジュールのAPI、ID、依存関係が省略できます。ここで、このサポートを実装する方法は?判断する場合は、実際に(引数=== 1){...} elseif ...それらの多くが必要です。もちろん、これには利点があります(?、考えてみてください)。ここでは、POPを使用して、そのようなサポートの実装を容易にする場合があります。
コードコピーは次のとおりです。
var define = function(){
//このコールバックを取り出します
var args = [] .slice.call(arguments)
fn = args.pop();
//他の魔法のことをしてください
fn.apply(null、args)
// ...
}、
callback = function(){
var args = arguments、i = 0、len = args.length;
if(len === 0)console.log( '1つのコールバック'のみ);
for(; i <len; i ++){
console.log(args [i]);
}
}
//それらの3つの実行結果をチェックしてください
定義(コールバック);
定義(「2つのパラメーターがあります」、コールバック);
定義(「3つのパラメーターがあります」、「Hello World」、コールバック);
2日前、私はJSでいくつかのトリックを使用したときに何かを引用していました。私はいつもコードにあまりにも没頭しないように自問しますが、JSだけでなく、コードはいつも私たちにあまりにも多くの楽しみを与えてくれます。それを嫌う方法。ハハ。