Javascript .call方法在此关键字处抛出错误
在下面的简化代码中,我试图将字符串妖精推入生物数组。不幸的是,我在Javascript .call方法在此关键字处抛出错误,javascript,call,Javascript,Call,在下面的简化代码中,我试图将字符串妖精推入生物数组。不幸的是,我在this.push(x)中出错 未捕获类型错误:无法读取addName处未定义的属性“push” 如果this指向拥有它的对象,那么当它与call语句一起使用时,该对象不应该是生物对象吗?非常感谢你的帮助 “严格使用”; 变种生物; 生物=[‘僵尸’、‘骷髅’、‘兽人’、‘巨型蜘蛛’]; 函数addName(x){ 这个。推(x) } addName('goblin')。调用(生物)你需要像addName.call(生物)那样调
this.push(x)
中出错未捕获类型错误:无法读取addName处未定义的属性“push”
如果this
指向拥有它的对象,那么当它与call
语句一起使用时,该对象不应该是生物对象吗?非常感谢你的帮助
“严格使用”;
变种生物;
生物=[‘僵尸’、‘骷髅’、‘兽人’、‘巨型蜘蛛’];
函数addName(x){
这个。推(x)
}
addName('goblin')。调用(生物)代码>你需要像addName.call(生物)
那样调用。对函数本身调用Call
函数,而不是对其结果调用,您已经完成了这项操作。如果函数接受参数,则可以在传递上下文后传递这些参数
“严格使用”;
变种生物;
生物=[‘僵尸’、‘骷髅’、‘兽人’、‘巨型蜘蛛’];
函数addName(x){
这个。推(x)
}
addName.call(生物,地精);
控制台日志(生物)代码>你需要像addName.call(生物)
那样调用。对函数本身调用Call
函数,而不是对其结果调用,您已经完成了这项操作。如果函数接受参数,则可以在传递上下文后传递这些参数
“严格使用”;
变种生物;
生物=[‘僵尸’、‘骷髅’、‘兽人’、‘巨型蜘蛛’];
函数addName(x){
这个。推(x)
}
addName.call(生物,地精);
控制台日志(生物)代码>您的代码中有两个问题
- 调用
undefined
上的call
方法-您正在调用call
方法以返回addName
方法调用的返回值,该方法调用返回undefined
,而调用只能在函数
上调用
call
方法将此
参数作为第一个参数,并从第二个参数开始调用函数的参数
您需要将goblin作为call的第二个参数传递
addName.call(creatures, 'goblin');
代码中有两个问题
- 调用
undefined
上的call
方法-您正在调用call
方法以返回addName
方法调用的返回值,该方法调用返回undefined
,而调用只能在函数
上调用
call
方法将此
参数作为第一个参数,并从第二个参数开始调用函数的参数
您需要将goblin作为call的第二个参数传递
addName.call(creatures, 'goblin');
我相信在这种情况下,课堂更适合
'use strict';
class Creatures5{
constructor(){
this.creatures = ['zombie', 'skeleton', 'orc', 'giant spider'];
}
addName(x) {
this.creatures.push(x)
console.log(this.creatures)
}
}
var CreatureObj = new Creatures5;
CreatureObj.addName('goblin');
或者你可以
'use strict';
var creatures = ['zombie', 'skeleton', 'orc', 'giant spider'];
function addName(x){
creatures.push(x)
}
this.addName.call('goblin')
我相信在这种情况下,课堂更适合
'use strict';
class Creatures5{
constructor(){
this.creatures = ['zombie', 'skeleton', 'orc', 'giant spider'];
}
addName(x) {
this.creatures.push(x)
console.log(this.creatures)
}
}
var CreatureObj = new Creatures5;
CreatureObj.addName('goblin');
或者你可以
'use strict';
var creatures = ['zombie', 'skeleton', 'orc', 'giant spider'];
function addName(x){
creatures.push(x)
}
this.addName.call('goblin')