考虑以下示例
var Foo = function(){
this.identity = 'Foo';
};
Foo.prototype.bar = function(){
this.identity = 'bar';
};
var fooInstance = new Foo(),
bar = new fooInstance.bar();
问题
在 内bar
,我如何获得fooInstance
变量?有没有办法让孩子Foo
识别其父母fooInstance
?例如,我如何创建一个bar
返回的函数fooInstance
。一个小小的警告是 bar 必须使用prototype
命令创建,不能简单地嵌套Foo
以访问任何Foo
实例。
我的想法以及为什么它们不起作用
可以像这样重写函数
var Foo = function(){
this.identity = 'Foo';
};
Foo.prototype.createBar = function(){
var parent = this;
function bar(){
this.parent = parent;
this.identity = 'bar';
};
return new bar();
};
var fooInstance = new Foo(),
bar = fooInstance.createBar();
然而,为了创建易于阅读的代码,如果不需要,我宁愿不使用这种方法。
进一步澄清
让我把这个问题放在上下文中。我在 CanvasRenderingContext2D 上进行原型设计,以便画布元素的所有上下文都包含我的新方法。让我们调用该方法 foo 并假设 context 是创建的画布上下文。如何创建像“new context.foo()”这样的变量,以便 foo 函数可以使用上下文变量?