如何获取函数名称?例如,我有一个函数:
function Bot(name, speed, x, y) {
this.name = name;
this.speed = speed;
this.x = x;
this.y = y;
}
并且我有一个返回有关Bot信息的方法:
Bot.prototype.showPosition = function () {
return `I am ${Bot.name} ${this.name}. I am located at ${this.x}:${this.y}`; //I am Bot 'Betty'. I am located at -2:5.
}
所以我有一个继承Bot函数的函数:
function Racebot(name, speed, x, y) {
Bot.call(this, name, speed, x, y);
}
Racebot.prototype = Object.create(Bot.prototype);
Racebot.prototype.constructor = Racebot;
let Zoom = new Racebot('Lightning', 2, 0, 1);
console.log(Zoom.showPosition());
Zoom.showPosition应该返回:
I am Racebot 'Lightning'. I am located at 0:1.
但是它返回I am Bot
而不是I am Racebot
。
我该怎么做?
答案 0 :(得分:3)
在showPosition()函数中将this.constructor.name
替换为Bot.name
时,它应该可以工作。
这是因为Bot.name
将始终返回Bot()函数的名称,而this.constructor.name
会在Racebot原型上查找设置为constructor
属性的函数的名称实例(由于Racebot.prototype.constructor = Racebot)