在javascript中,我们有一个参数对象,它是一个我们可以查询的不太完整的数组。
如何获取每个参数的名称?
例如,如果我想知道第三个参数被称为嵌入式,我将如何发现它?
arguments[2].name == "embedded'
显然上述情况不起作用。
答案 0 :(得分: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){}
为函数提供尽可能多的参数。
答案 1 :(得分:0)
arguments
对象是参数列表,它不存储参数的名称。
有些浏览器允许您使用toString
方法获取函数的代码:
function a(arg1){}
// undefined
a.toString()
// "function a(arg1){}"
如果您需要命名参数,通常会传递一个对象:
$.ajax({
url: "test.html",
cache: false
})
我不确定你想要实现的目标......如果你使用位置参数而第三个参数被称为“嵌入式”,那么arguments[2]
的名称将永远是“嵌入式”。但是,虽然您知道在编写代码时,参数的名称不会存储在您可以方便地访问它们的任何位置。
答案 2 :(得分:0)
类似这样的事情
function a() {
var arr = Array.prototype.slice.call(arguments, 0, arguments.length);
for (var aux in arr) {
alert(aux + ":" + arguments[aux]);
}
}
的src: https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Functions_and_function_scope/arguments