有人可以向我解释一下为什么我无法在字符串数组上正确使用 apply 方法吗?
function speak(line) {
console.log(line);
}
var whiteRabbit = {type: "white", speak: speak};
speak.apply(whiteRabbit, ["Burp!","Skree","Hello"]);
输出是Burp
,为什么不是整个数组?如何通过 apply 方法实现这一点?
最佳答案
The
apply()
method calls a function with a giventhis
value, andarguments
provided as an array (or an array-like object).
您仅将数组的第一个元素作为参数line
。如果您采用更多参数,您也可以看到数组的其余部分。
function speak(line, line1, line2) {
console.log(line);
console.log(line1);
console.log(line2);
}
var whiteRabbit = {
type: "white",
speak: speak
};
speak.apply(whiteRabbit, ["Burp!", "Skree", "Hello"]);
如果您想将值用作数组,则可以使用 arguments
并迭代值。
function speak() {
Array.prototype.forEach.call(arguments, function (s) {
console.log(s);
});
}
var whiteRabbit = {
type: "white",
speak: speak
};
speak.apply(whiteRabbit, ["Burp!", "Skree", "Hello"]);
对于 ES6,你可以使用 rest parameters ...
function speak(...args) {
args.forEach(s => console.log(s));
}
var whiteRabbit = {
type: "white",
speak: speak
};
speak.apply(whiteRabbit, ["Burp!", "Skree", "Hello"]);
关于javascript - 如何对字符串数组使用 apply 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46129070/