У меня есть какой-то объект, скажем son
, который я хотел бы унаследовать от другого объекта father
.
Конечно, я могу сделать функцию конструктора для отца, например
Father = function() {
this.firstProperty = someValue;
this.secondProperty = someOtherValue;
}
А затем используйте
var son = new Father();
son.thirdProperty = yetAnotherValue;
, но это не совсем то, что я хочу.Поскольку son
будет иметь много свойств, было бы более читабельно, если бы сын был объявлен как литерал объекта.Но тогда я не знаю, как установить его прототип.
Выполнение чего-то вроде
var father = {
firstProperty: someValue;
secondProperty: someOtherValue;
};
var son = {
thirdProperty: yetAnotherValue
};
son.constructor.prototype = father;
не сработает, поскольку цепочка прототипов кажется скрытой и не заботится о сменеconstructor.prototype.
Я думаю, что могу использовать свойство __proto__
в Firefox, например,
var father = {
firstProperty: someValue;
secondProperty: someOtherValue;
};
var son = {
thirdProperty: yetAnotherValue
__proto__: father
};
son.constructor.prototype = father;
, но, насколько я понимаю, это не стандартная функция языкаи лучше не использовать его напрямую.
Есть ли способ указать прототип для литерала объекта?