考慮下面的例子原型的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