javascript - 如何对字符串数组使用 apply 方法?

标签 javascript arrays apply

有人可以向我解释一下为什么我无法在字符串数组上正确使用 apply 方法吗?

function speak(line) {
     console.log(line);
}
var whiteRabbit = {type: "white", speak: speak};
speak.apply(whiteRabbit, ["Burp!","Skree","Hello"]);

输出是Burp,为什么不是整个数组?如何通过 apply 方法实现这一点?

最佳答案

来自Function#apply

The apply() method calls a function with a given this value, and arguments 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/

相关文章:

javascript - 纸抽屉面板默认为窄

javascript - 在字符串连接内执行映射函数

javascript - Crockford "new"方法

r - 使用 R 中的 apply 系列将 2 列数据框的每一行传递给我创建的函数?

javascript - Threejs 自定义着色器 - 屏幕撕裂

javascript - Notepad++ 的字符串转义/取消转义插件

javascript - 检查哈希数组是否包含哈希

javascript - 如何从 JS "in another file"访问 PHP 数组?

r - 在 R 中,提取后续列为 max 的第 1 列的值

javascript - 向 Summernote 编辑器添加禁用/启用方法