Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проблема с видимостью функций в переданном объекте (https://javascript.ru/forum/misc/71686-problema-s-vidimostyu-funkcijj-v-peredannom-obekte.html)

Konkery 05.12.2017 16:10

Проблема с видимостью функций в переданном объекте
 
Доброго времени суток!
Неожиданно столкнулся с проблемой которую пока никак не удалось
преодолеть. Суть Есть Объект_1 и Объект_2, первый передается второму
как параметр при создании. Объекты создаются через new, затем
происходит вызов внутренней функции Объект_2, которая внутри себя
вызывает функцию Объект_1, вот ее то исп. среда и не видит.
Перепробовал все известные мне варианты, игрался с this, call, bind
ничего не помогает, исп. среда упорно говорит что ф-я ей не известна,
код ниже. Пишу под IoT систему Espruino.
function class_1()
{
this.A_1;
this.B_1;
}

class_1.prototype.func_class_1 = function()
{
	/*
		здесь идет работа с  this.A_1, this.B_1
	*/
}

function class_2 (_obj /*object of type class_1*/)
{
this.A_2;
this.B_2;
this.Obj_2 = _obj;
}

class_2.prototype.func_class_2  = function()
{
	//вот здесь и происходит проблема с вызовом "func_class_1()"
	this.Obj_2.func_class_1();
}

var o1 = new class_1();
var o2 = new class_2(o1);

o2.func_class_2(); //сообщение исп. среды>>> Uncaught Error: Field or method "func_class_1()" does not already exist, and can't create it on undefined

код не из примера, фрагмент большой, но он точно передает
ситуацию.
Всем заранее большое спасибо !

Nexus 05.12.2017 16:15

По-моему никаких проблем :)
https://jsfiddle.net/r9cbx9fj/

Konkery 05.12.2017 16:32

Вот и по моему не должно быть никаких проблем, значит проблема
с прошивкой которую адаптирует Амперка ((

Dilettante_Pro 05.12.2017 16:47

Konkery,
Или вот в этом участке кода:
Цитата:

Сообщение от Konkery
/*

        здесь идет работа с  this.A_1, this.B_1

    */

- единственное отличие от кода Nexus,


Часовой пояс GMT +3, время: 10:28.