我有一個關於子原型的問題。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
延長酒吧和巴茲的原型。
我的問題是,如果存在一個更簡單的方法來做到這一點,並訪問Bar和Baz內的主要對象Foo,或者這是通常的方式嗎?我想這樣做的原因是創建一個主對象var x = new Foo()
並且所有子對象都可以訪問主對象。
你目前的方法看起來相當不錯 - 每班大約有1條語句將它引入混合。 – goat
這是「子原型」實際上是由一些人實際使用的模式嗎? – basilikum
我沒有看到任何理由將Bar或Baz作爲函數構造函數的原型。我寫下了我的變體,在Foo中加入了Bar和Baz – Andrew