У меня есть вопрос о суб-прототипировании.Javascript sub prototyping
В качестве примера я хочу сделать что-то вроде:
var Foo = function() { this.Bar.prototype.Foo = this.Baz.prototype.Foo = this };
Foo.prototype.is = "foo";
Foo.prototype.Iam = function() { return this.is };
Foo.prototype.Bar = function() {};
Foo.prototype.Bar.prototype.is = "bar";
Foo.prototype.Bar.prototype.Iam = function() { return this.Foo.is + this.is };
Foo.prototype.Baz = function() {};
Foo.prototype.Baz.prototype.is = "baz";
Foo.prototype.Baz.prototype.Iam = function() { return this.Foo.is + this.is };
var foo = new Foo();
var bar = new foo.Bar();
var baz = new foo.Baz();
console.log(foo.Iam()); // output: foo
console.log(bar.Iam()); // output: foobar
console.log(baz.Iam()); // output: foobaz
Чтобы получить доступ к Foo-объект в баре и Баз я продлить прототип бара и Баз с this.Bar.prototype.Foo = this.Baz.prototype.Foo = this
.
Мой вопрос в том, существует ли более простой способ сделать это и получить доступ к основному объекту Foo в пределах Bar и Baz, или это обычный способ сделать это? Причина, по которой я хочу сделать это, - создать один основной объект var x = new Foo()
, и все вспомогательные объекты могут получить доступ к основному объекту.
Ваш текущий метод кажется довольно приличным - примерно 1 оператор за класс вводит его в микс. – goat
Является ли это «вспомогательным прототипом» фактического шаблона, который фактически используется некоторыми людьми? – basilikum
Я не вижу причин для прототипа Bar или Baz, которые являются конструктором функций. Я записал свой вариант, включив Bar и Baz в Foo – Andrew