arguments は JavaScript の組み込みオブジェクトであり、NodeList に似ており、length プロパティを持ちますが、push や Pop などの配列メソッドは持ちません。
ディーン・エドワーズのフォーマット関数は非常に感動的です:
function format(string) {
var args = argument;
var pattern = new RegExp('%([1-' + args.length + '])', ' g');
return String(string).replace(pattern, function(match,index) {
return args[index];
});
}
alert(format('%1 が誰の %2 かを知りたいyou %3', 'I', 'shirt', 'wear'));
次の 3 つの点に注意してください: 1. String(string) を使用すると、文字列が任意の値 (null、false、123 など) になることが保証されます。 、など)決して間違ってはいけません。 2. replace メソッドを確認します。2 番目のパラメータには、非常に柔軟な関数を指定できます。 3. 引数と正規表現を上手に組み合わせてフォーマット機能を実現します。
引数を実際の配列に変換する方法:
var args = Array.prototype.slice.call(arguments);
これについては何も言うことはありません。slice メソッドを使用して配列のようなオブジェクトを変換できます。配列に変換します。
プリセットパラメータを使用して関数を作成します:
function makeFunc() {
var args = Array.prototype.slice.call(arguments);
var func = args.shift();
return function() {
return func .apply(null, args.concat(Array.prototype.slice.call(arguments)));
};
}
var MajorTom = makeFunc(format, "こちらは地上管制のトム少佐です。私は %1 です。 ");
majorTom("足を踏み入れてドアを通過する");
majorTom("最も奇妙な方法で浮遊する");
これは非常に興味深いです。 makeFunc は関数を作成できる関数で、作成した関数はすべて同じプリセットパラメータを持ちます。これにより、コードの重複が回避され、再利用性が向上します。
自己参照関数を作成します:
functionrepeat(fn,times,lay){
returnfunction(){
if(times-->0){
fn.apply(null,arguments);
var args = Array.prototype.slice.call(arguments);
var self = argument.callee;
setTimeout(function(){self.apply(null,args)}, late); }
var somethingWrong =repeat(comms, 3, 2000);
somethingWrong("聞こえますか、トム少佐?");
は実際にはarguments.calleeの使用法であり、匿名関数でそれ自体を参照するためによく使用されます。ここではリピート機能を実装するために使用されます。繰り返しは関数を作成する関数なので、考え方が少し複雑ですが、よく考えてみると非常に良いものです。
原文の最後の文で終わります: