Я новичок в JavaScript, поэтому, если я не понимаю понятия, пожалуйста, не стесняйтесь, дайте мне знать.Как я могу переопределить свойство в этой ситуации
У меня есть следующий класс:
var Human = function() {};
Object.defineProperty(Human.prototype, 'name', {
get: function() { return this._name; },
set: function (value) { this._name = value; },
configurable: true,
enumerable: true
});
Я тогда определить следующий дочерний объект:
var Man = function() {};
Man.prototype = new Human(); //Am I inherting Human's prototype (and properties) here?
Man.prototype.name = 'Matt'; //If so, I should be setting Man's name property (overriding the value inherited from Human)
Однако console.log(Man.name)
распечатывает ""
.
Почему это и как я могу правильно переопределить Human
?
PS:
Я также попытался
Man.name = 'Matt';
вместо
Man.prototype.Name = 'Matt';
Но я получил такое же поведение.
Ps2:
Следует также отметить, что, если я исполню console.log(Man.prototype._name)
я получить ожидаемый выход "Matt"
'Man.name' - это имя_функции_, которое не имеет ничего общего с этим свойством' name'. Если вы выполнили 'var Man = function someName() {};', 'Man.name' будет' 'someName" '. В любом случае, каково ваше ожидаемое поведение? – Xufox