Рассмотрим следующий примерпрототипирования с 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
Btw, [этот ответ] (http://stackoverflow.com/questions/13418669/javascript-do-i-need-to-put-this-var-for-every-variable-in-an-object/13418980# 13418980) может помочь вам понять различия между переменными и свойствами. – Bergi
Позвольте мне задать вопрос в контексте. Я прототипируюсь на CanvasRenderingContext2D, так что все контексты для элемента canvas будут содержать мой новый метод. Давайте назовем этот метод foo и предположим, что контекст - это созданный контекст холста. Как создать переменную типа «new context.foo()» так, чтобы функция foo могла использовать переменную контекста? –