Array.prototype.slice(arguments, 0); この書き込みメソッドは function() {} 内で使用でき、関数のパラメーター リストを実数の配列に変換できます。例を参照してください:
var slide = Array .prototype.slice;
var toString = Object.prototype.toString;
(function() {
var args = argument;
console.log(args, toString.call(args)); // [ 1, 2, 3] "[オブジェクト引数]"
var argsArr = slide(args, 0);
console.log(argsArr, toString.call(argsArr)); // [1, 2, 3 ] "[object Array]"
}(1,2,3))
関数のパラメーター リストの引数が、呼び出されてから 1 秒以内に Array に変更されることがわかります。スライス。
同様に、選択した DOM 要素を配列に変換することもできます。
slice.call(document.querySelectorAll("div"));
手がかりに従って、スライド メソッドでオブジェクトをオブジェクトに変換できるか考えてみましょう。配列?例を参照してください:
console.log (slice.call( 'string')); // ["s", "t", "r", "i", "n", "g"]
console.log(slice.call(new) String('string' ))); // ["s", "t", "r", "i", "n", "g"]
毎回、文字列直接配列に変換されます。
ただし、数値とブール値は空の配列に変換されます:
console.log(slice.call(33));
console.log(slice.call(true));
通常のオブジェクトも長さ属性を追加しない限り、空の配列に変換されます:
console.log(slice.call({name: 'obj'})); // []
console.log(slice.call({0: 'zero', 1: 'one '})); // []
console.log({0: 'ゼロ', 1: '1', 名前: 'obj', 長さ: 2}); // [" zero", "one "]
また、配列のクローンを作成するためにも使用できます:
var srcArr = [1,2,3];
var newArr = srcArr.slice(0);
console.log( srcArr, newArr); // [1,2,3] [1,2,3]
console.log(srcArr == newArr); // false