Javascript 如何使用字符串数组的apply方法?
有人能解释一下为什么我不能正确使用字符串数组上的apply方法吗Javascript 如何使用字符串数组的apply方法?,javascript,arrays,apply,Javascript,Arrays,Apply,有人能解释一下为什么我不能正确使用字符串数组上的apply方法吗 function speak(line) { console.log(line); } var whiteRabbit = {type: "white", speak: speak}; speak.apply(whiteRabbit, ["Burp!","Skree","Hello"]); 输出是打嗝,为什么不是整个阵列?如何使用apply方法实现这一点?将数组扩展为函数参数,因为您唯一的参数是行,数组中的第一项被分配
function speak(line) {
console.log(line);
}
var whiteRabbit = {type: "white", speak: speak};
speak.apply(whiteRabbit, ["Burp!","Skree","Hello"]);
输出是打嗝,为什么不是整个阵列?如何使用apply方法实现这一点?将数组扩展为函数参数,因为您唯一的参数是行
,数组中的第一项被分配给它,其余的被忽略
顺便说一句-由于speak
功能不以任何方式使用此
,因此apply的第一个参数在这种情况下并不重要
如果要向函数添加更多参数,可以查看其工作原理:
功能发言(a、b、c){
控制台日志(a、b、c);
}
说。申请(空,[“打嗝!”,“斯克雷”,“你好])代码>将数组扩展为函数参数,因为您唯一的参数是行
,数组中的第一项被分配给它,其余的被忽略
顺便说一句-由于speak
功能不以任何方式使用此
,因此apply的第一个参数在这种情况下并不重要
如果要向函数添加更多参数,可以查看其工作原理:
功能发言(a、b、c){
控制台日志(a、b、c);
}
说。申请(空,[“打嗝!”,“斯克雷”,“你好])代码>来自
apply()
方法使用给定的此值和作为数组(或数组)提供的参数调用函数
仅将数组的第一个元素作为参数行
。如果使用更多参数,也可以看到阵列的其余部分
功能发言(第行、第1行、第2行){
控制台日志(行);
console.log(第1行);
控制台日志(第2行);
}
var whiteRabbit={
键入:“白色”,
说:说
};
说。申请(白兔,[“打嗝!”,“斯克里”,“你好])代码>来自
apply()
方法使用给定的此值和作为数组(或数组)提供的参数调用函数
仅将数组的第一个元素作为参数行
。如果使用更多参数,也可以看到阵列的其余部分
功能发言(第行、第1行、第2行){
控制台日志(行);
console.log(第1行);
控制台日志(第2行);
}
var whiteRabbit={
键入:“白色”,
说:说
};
说。申请(白兔,[“打嗝!”,“斯克里”,“你好])
我假设fatRabbit
就是whiteRabbit
,你的问题是为什么你只看到打嗝代码>而不是完整数组
原因是apply
使用数组来调用带有离散参数的函数,因此第一个条目显示为行
参数,而您看不到其他条目,因为您没有相应的参数
如果要查看数组,请使用call
而不是apply
;然后,行
将引用数组,而不仅仅是第一个条目:
功能发言(行){
控制台日志(行);
}
var-whiteRabbit={type:“white”,speak:speak};
说话。打电话(白兔,[“打嗝!”,“斯克里”,“你好])
我假设fatRabbit
就是whiteRabbit
,你的问题是为什么你只看到打嗝代码>而不是完整数组
原因是apply
使用数组来调用带有离散参数的函数,因此第一个条目显示为行
参数,而您看不到其他条目,因为您没有相应的参数
如果要查看数组,请使用call
而不是apply
;然后,行
将引用数组,而不仅仅是第一个条目:
功能发言(行){
控制台日志(行);
}
var-whiteRabbit={type:“white”,speak:speak};
说话。打电话(白兔,[“打嗝!”,“斯克里”,“你好])代码>您需要添加更多参数
功能发言(第行、第2行、第3行){
控制台日志(第行、第2行、第3行);
}
var-whiteRabbit={type:“white”,speak:speak};
说。申请(白兔,[“打嗝!”,“斯克里”,“你好])代码>您需要添加更多参数
功能发言(第行、第2行、第3行){
控制台日志(第行、第2行、第3行);
}
var-whiteRabbit={type:“white”,speak:speak};
说。申请(白兔,[“打嗝!”,“斯克里”,“你好])代码>你可以让兔子一个接一个地说:
["Burp!","Skree","Hello"].forEach( speak );
如果您也想更改上下文,请执行以下操作:
["Burp!","Skree","Hello"].forEach( word => speak.call(rabbit, word));
你可以让兔子一个接一个地说:
["Burp!","Skree","Hello"].forEach( speak );
如果您也想更改上下文,请执行以下操作:
["Burp!","Skree","Hello"].forEach( word => speak.call(rabbit, word));
什么是肥兔?对不起,应该是白兔…我怎样才能纠正它什么是肥兔?对不起,应该是白兔…我怎样才能纠正它谢谢你的回答!所以让它成为动态的,我应该使用arguments.length。对吗?@rajeev或者更好的rest/spread语法:函数speak(…args){console.log(…args);}
谢谢你的回答!所以让它成为动态的,我应该使用arguments.length。对吗?@rajeev或者更好的rest/spread语法:function speak(…args){console.log(…args);}
谢谢你的回答!你能演示一下如何让它变得动态吗?@RajeevHanda:你说的“动态”是什么意思?@RajeevHanda:我猜了一下你上面说的动态是什么意思。谢谢你的回答!你能展示一下如何让它变得动态吗?@RajeevHanda:你说的“动态”是什么意思?@RajeevHanda:我猜了一下你上面说的动态是什么意思。