0
Я пытаюсь использовать наследование объектов javascript, где я переопределяю «частный» метод в базовом «классе» (другими словами, сделайте его защищенным методом).Как переопределить частный метод в javascript?
Возможно ли это? Вот моя лучшая попытка (которая не работает)
function Vehicle(color) {
this.color = color;
}
Vehicle.prototype.drive = function() {
_getMessage.call(this);
}
function _getMessage() {
console.log("override this method!")
}
//----------------------------------------------------------------
var Car = (function() {
Car.prototype = Object.create(Vehicle.prototype);
Car.prototype.constructor = Car;
function Car(color) {
Vehicle.call(this, color)
}
function _getMessage() {
console.log("The " + this.color + " car is moving!")
}
return Car;
}());
//----------------------------------------------------------------
$(function() {
var c = new Car('blue');
c.drive()
})
https://plnkr.co/edit/ZMB9izK1W9VuFQHPNsvu?p=preview
Вы можете Таким образом. Кроме того, оригинальная функция '_getMessage' на самом деле не является частью вашего класса. – Jorg
'Вот моя лучшая попытка (которая не работает)' - что с этим не так? Что вы ожидаете? Что вы получаете вместо этого? –
* _getMessage * является глобальным, он не является «частным» каким-либо образом, просто замените его. Если он действительно был закрытым, вы можете его заменить, если у вас есть привилегированная функция специально для этого. – RobG