Является ли это хорошим/безопасным кросс-браузерным способом реализации метода переопределения в JavaScript? :Переопределение методов в JavaScript с конструкторским свойством
function Person(firstName, lastName)
{
this.firstName = firstName;
this.lastName = lastName;
};
Person.prototype.sayHi = function()
{
return "Hi, my name is " + this.firstName;
};
function Employee(firstName, lastName, position)
{
Person.call(this, firstName, lastName);
this.position = position;
};
Employee.prototype = Object.create(Person.prototype);
Employee.prototype.sayHi = function()
{
return this.constructor.prototype.sayHi() + " I'm a " + this.position;
}
Я мог бы также написать:
Employee.prototype.sayHi = function()
{
return Person.prototype.sayHi() + " I'm a " + this.position;
}
, но с этим решением я ссылаюсь к прямому методу, или
Employee.prototype.sayHi = function()
{
return this.__proto__.sayHi() + " I'm a " + this.position;
}
, но этот ужасный и не броузерах.
EDIT: Я предположил, Object.create является броузерами, как я могу использовать подкладку
В JavaScript нет такой вещи, как «перегрузка метода». Я думаю, вы имеете в виду «переопределение» в этом случае, но в JS тоже нет такой вещи. –
извините, опечатка: переопределение – dragonfly