我正在阅读js中的呼叫功能。 现在我有了这段代码
var o = {
name: 'i am object',
age: 22
}
function saymyName(arguentToFunc) {
console.log('my name is ' + this.name + 'and thw argument passed is ' + arguentToFunc);
}
saymyName.apply(o, 'hello there');

但它会显示一条错误消息Uncaught TypeError: Function.prototype.apply: Arguments list has wrong type
在书中,明确的指南是第二个参数是传递给函数的值。例如,这里是hello there
那么为什么会出错?
apply needs this
如果函数被定义为接受任意数量的参数,是什么意思?我的意思是arbritary ??
答案 0 :(得分:3)
使用call代替apply,因为 apply 需要第二个参数为类似数组的对象。
当需要将值数组作为参数发送到被调用函数时,使用 apply (例如,使用参数对象传递当前正在执行的函数的所有参数)。
var o = {
name: 'i am object',
age: 22
};
function saymyName(arguentToFunc) {
console.log('my name is ' + this.name + 'and thw argument passed is ' + arguentToFunc);
}
saymyName.call(o, 'hello there');
另外,请参阅bind了解如何将函数 this 设置为固定值,无论其如何调用。
答案 1 :(得分:3)