これは、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;
}
しかし、これはひどいもので、クロスブラウザではありません。
編集:シムを使用できるため、Object.createはクロスブラウザーであると想定しました