考虑下面的例子原型的JavaScript构造
问题
在bar
,我可以怎样获得fooInstance
变量? Foo
的子女是否有办法将其父母识别为fooInstance
?例如,我如何在bar
中创建一个功能,返回fooInstance
。需要注意的一点是,该条必须使用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上进行原型设计,以便canvas元素的所有上下文都将包含我的新方法。让我们调用该方法foo并假定上下文是创建的画布上下文。如何像这样创建一个变量“new context.foo()”,使得foo函数可以使用上下文变量?
什么是'fooInstance'?什么是“Foo”的“孩子”和“父母”?什么是你调用但不定义的'bar'方法? “原型指令”是什么意思? – Bergi 2013-04-20 19:28:24
顺便说一句,[这个答案](http://stackoverflow.com/questions/13418669/javascript-do-i-need-to-put-this-var-for-every-variable-in-an-object/13418980# 13418980)可能会帮助您了解变量和属性之间的差异。 – Bergi 2013-04-20 19:31:16
让我把问题放在背景下。我在CanvasRenderingContext2D上进行原型设计,以便canvas元素的所有上下文都将包含我的新方法。让我们调用该方法foo并假定上下文是创建的画布上下文。如何像这样创建一个变量“new context.foo()”,使得foo函数可以使用上下文变量? – 2013-04-20 19:36:46