[解決済み] Array.prototype.slice.call`はどのように機能するのですか?
質問
を作るのに使われているのは知っています。
arguments
本物の
Array
を使用するとどうなるのか、よくわかりません。
Array.prototype.slice.call(arguments);
.
解決方法は?
ボンネットの中で何が起こっているかというと
.slice()
が普通に呼ばれる。
this
はArrayで、そのArrayに対して繰り返し処理を行うだけです。
どのように
this
の中に
.slice()
関数はArrayですか?なぜなら、そうすると
object.method();
...
object
の値に自動的になります。
this
の中で
method()
. というわけで。
[1,2,3].slice()
...
[1,2,3]
の値として、配列が設定されます。
this
で
.slice()
.
しかし、何か他のもので代用できるとしたらどうでしょう。
this
の値は?代用したものが数字である限り
.length
プロパティと、数値のインデックスを持つプロパティの束があれば、うまくいくはずです。このようなオブジェクトは、しばしば
配列的オブジェクト
.
は
.call()
と
.apply()
メソッドを使用すると
手動で
の値を設定します。
this
を関数で実行します。ですから、もし
this
で
.slice()
を
配列のようなオブジェクト
,
.slice()
は、単に
とする
は、Arrayで動作していると判断し、その通りに動作します。
このプレーンなオブジェクトを例にしてみましょう。
var my_object = {
'0': 'zero',
'1': 'one',
'2': 'two',
'3': 'three',
'4': 'four',
length: 5
};
これは明らかにArrayではないのですが、もしこれを
this
の値です。
.slice()
の配列のように見えるので、うまくいくでしょう。
.slice()
が正しく動作するようにします。
var sliced = Array.prototype.slice.call( my_object, 3 );
コンソールで確認できるように、期待通りの結果になっています。
['three','four'];
を設定すると、こうなるわけです。
arguments
オブジェクトを
this
の値です。
.slice()
. なぜなら
arguments
には
.length
プロパティと数値インデックスの束です。
.slice()
は、あたかも本物のArrayを操作しているかのように動作します。
関連
-
VUEグローバルフィルターの概念と留意点、基本的な使い方
-
[解決済み】SyntaxError: JSONの位置1に予期しないトークンoがある。
-
[解決済み】Node.jsで "Cannot find module "エラーを解決するには?
-
[解決済み】TypeErrorの解決方法。未定義またはヌルをオブジェクトに変換できない
-
jq は html ページとデータを動的に分割する。
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み】別のウェブページにリダイレクトするにはどうすればいいですか?
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
JSアレイループと効率解析の比較
-
vueが定義するプライベートフィルタと基本的な使い方
-
[解決済み】ローカルファイルを開くことができません - Chrome: ローカルリソースの読み込みが許可されていない
-
[解決済み】TypeErrorの解決方法。未定義またはヌルをオブジェクトに変換できない
-
OSSアップロードエラーを解決する: net::ERR_SSL_PROTOCOL_ERROR
-
[解決済み] メソッドと関数の違いは何ですか?
-
[解決済み] Javascriptのcall() & apply() vs bind()?
-
[解決済み] JavaScriptで "arguments "オブジェクトを配列に変換するにはどうすればよいですか?
-
[解決済み】javascriptの[].slice.callの説明?
-
[解決済み] querySelectorAllメソッドとgetElementsBy*メソッドは何を返すのですか?