Как я могу получить название функции? - PullRequest
0 голосов
/ 03 октября 2018

Как я могу получить название функции?Например, у меня есть функция:

function Bot(name, speed, x, y) {
    this.name = name;
    this.speed = speed;
    this.x = x;
    this.y = y;
}

, и у меня есть метод, который возвращает информацию о боте:

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.
}

Итак, у меня есть функция, которая наследует функцию бота:

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.

Как я могу это сделать?

1 Ответ

0 голосов
/ 03 октября 2018

Когда вы заменяете this.constructor.name на Bot.name в вашей функции showPosition (), это должно работать.

Это потому, что Bot.name всегда будет возвращать имя вашей функции Bot (), тогда как this.constructor.name ищет имя функции, установленной как constructor свойство в прототипе вашего экземпляра Racebot (который является "Racebot" из-за Racebot.prototype.constructor = Racebot)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...