Czy istnieje sposób na ujawnienie prototypów obiektów przez inny obiekt?Wystawianie prototypów w obiekcie
var foo = function() {
var foo = {
bar: bar,
boo: boo
}
return foo;
function bar (age) {
this.age = age;
}
bar.prototype.shoutAge = function() {
alert('My age is ' + this.age);
}
function boo (age) {
this.age = age;
boo.prototype.shoutAge = function() {
alert('My age is ' + this.age);
}
}
}
var foo = foo();
var far = new foo.bar(13); // bar {age: 13}
far.shoutAge(); // far.shoutAge is not a function
var far = new foo.boo(13); // boo {age: 13} with __proto__
far.shoutAge(); // alert('My age is 13');
W tym kodzie „bar” obiekt jest ustawiony z prototypowego dziedziczenia - ale narażając bar traci dziedziczenie „shoutAge”.
Jednak „boo” w obiekt ma prototyp zadeklarowane wewnątrz niej, a funkcja zewnątrz ma dostęp do metody „shoutAge”.
Nie sądzę, że ta ostatnia jest najlepszą praktyką, mimo że działa. Więc jaka byłaby najlepsza praktyka?
Nie chcę każde wystąpienie „bar” mieć to metoda własnego „shoutAge”, zwłaszcza jeśli nie są potencjalnie setki wystąpień „bar”. Czy zwykle tworzysz osobny obiekt dla 'bar' zamiast prezentowania go przez 'foo'?
Gdzie jest dziedziczenie? Ani 'bar' ani' boo' nie dziedziczą się od siebie ani 'foo'. –
'far' dziedziczy po' bar.prototype' lub 'boo.prototype' – Oriol
Spróbuj lintować swój program. –