1

JavaScript には、照会できる完全な配列ではない引数オブジェクトがあります。

各引数の名前を取得するにはどうすればよいですか?

たとえば、たとえば 3 番目の引数がembeddedと呼ばれていることを知りたい場合、どうすればこれを発見できますか?

arguments[2].name == "embedded'

明らかに、上記は機能しません。

4

3 に答える 3

1

それは不可能だと思います。値自体のみが渡されます。

function logArguments(){
    for(key in arguments)
        console.log(key, arguments[key]);
}
var someObject = {someProperty:false};

logArguments("1", 3, "Look at me I'm a string!", someObject);
// Returns:
// 0 1
// 1 3
// 2 "Look at me I'm a string!"
// 3 Object {someProperty: false}

したがって、配列インデックスのみを取得できます。

ただし、これfor(key in arguments){}を使用して、関数に必要な数の引数を指定できます。

于 2012-12-04T14:07:33.110 に答える
0

このようなもの

function a() {
    var arr = Array.prototype.slice.call(arguments, 0, arguments.length);
    for (var aux in arr) {
        alert(aux + ":" + arguments[aux]);
    }
}

ソース: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Functions_and_function_scope/arguments

于 2012-12-04T14:08:06.540 に答える
0

オブジェクトはパラメーターのargumentsリストであり、引数の名前は格納されません。

一部のブラウザーでは、toStringメソッドを使用して関数のコードを取得できます。

function a(arg1){}
// undefined
a.toString()
// "function a(arg1){}"

名前付きパラメーターが必要な場合は、オブジェクトを渡すのが一般的です。

$.ajax({
  url: "test.html",
  cache: false
})

何を達成しようとしているのかわかりません...位置引数を使用し、3番目の引数が「embedded」と呼ばれる場合、の名前arguments[2]は常に「embedded」になります。しかし、コードを書くとき、引数の名前は便利にアクセスできる場所に保存されていないことを知っています。

于 2012-12-04T14:04:29.470 に答える