Javascript子原型

Jon*_*nny 5 javascript prototype

我有一个关于子原型的问题.

例如,我想做一些事情:

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
Run Code Online (Sandbox Code Playgroud)

为了访问Bar和Baz中的Foo对象,我扩展了Bar和Baz的原型this.Bar.prototype.Foo = this.Baz.prototype.Foo = this.

我的问题是,是否存在更简单的方法来访问Bar和Baz中的主要对象Foo,或者这是通常的方法吗?我想这样做的原因是创建一个主对象var x = new Foo(),所有子对象都可以访问主对象.

小智 0

我还没有看到太多使用子原型。我发现只有这样:

var Foo = function() {};
Foo.prototype.is = "foo";
Foo.prototype.Iam = function() { return this.is };

Foo.prototype.Bar = function() {};
Foo.prototype.Bar.prototype.foo = new Foo();
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.foo = new Foo();
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
Run Code Online (Sandbox Code Playgroud)