我知道 javascript 函数可以接受任意数量的参数,这些参数可以通过 arguments[i]
访问。我想知道是否可以将该数组转换为单独的参数,以发送到另一个也处理可变参数列表的函数。
我对字符串类进行了以下扩展,它基本上格式化字符串,类似于 string.format() 在 .Net 中的工作方式。
String.prototype.format = String.prototype.format = function () {
var s = this,
i = arguments.length;
while (i--) {
s = s.replace(new RegExp('\\{' + i + '\\}', 'gm'), arguments[i]);
}
return s;
};
我有另一个函数,需要获取 JavaScript 对象并将属性发送到字符串中进行处理。这些属性由调用函数设置。这是我试图获得的用法的示例。我只是坚持将属性作为单独的参数传递给上面的函数。关于如何实现这一点有什么想法吗?
function doMything(){
var myData = GetMyDataFromSomething(); // returns a javascript array of objects
var myMessageFormat1 = 'Person with ID {0} name is {1} {2}';
var myPropertyList1 = ['UserID', 'FirstName', 'LastName']
var finishedStrings1 = formatTheString(myData, myMessageFormat1, myPropertyList1);
// ex. Person with ID 45 name is Jake Gyllenhal; Person with ID 46 name is Bob Barker
var myMessageFormat2 = '{0} is from {1}, {2}';
var myPropertyList2 = ['FirstName', 'City', 'State']
var finishedStrings2 = formatTheString(myData, myMessageFormat2, myPropertyList2);
// ex. Jake is from Phoenix, AZ; Bob is from San Diego, CA
}
function formatTheString(data, formatString, propertyList){
var myStrings = [];
data.forEach(function(item){
myStrings.push(item.format(propertyList)); // this doesn't work because the object is passed as a single argument
};
return myStrings.join('; ');
}
最佳答案
其他答案是正确的,但只是为了明确显示参数
链:
function one() {
two.apply(this, arguments);
}
function two() {
console.log(arguments);
}
one("one", "two", "three");
打印:
["one", "two", "three"]
关于javascript - 是否可以将字符串列表转换为参数的变量列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20983978/