Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Вызов глобального this (https://javascript.ru/forum/events/44361-vyzov-globalnogo.html)

ArtJS 18.01.2014 17:57

Цитата:

А как в классическом ООП решается эта проблема?
Обычно вложенный класс имеет доступ к членам внешнего класса.
Например для ЯП Java (не Script) если это нестатические классы то можно наваять что-то в стиле такого:
public class MyObj {
	private String name = "abc";
	public class SubObj {
		private int x = 12345;
		void printName() {
			System.out.println(name);//спокойно обратимся к полю name внешнего класса.
		}
	}
}


Ну а использование такого как-то так будет:
MyObj.SubObj obj = new MyObj().new SubObj();
obj.printName();

Ладно, это конечно оффтоп :)
Просто представление в JS объектов в виде массивов накладывает свои особенности, сразу непривычно

danik.js 18.01.2014 18:52

Цитата:

Сообщение от ArtJS
Например для ЯП Java (не Script) если это нестатические классы то можно наваять что-то в стиле такого:

Да, действительно. В JS тебе придется явно передать ссылку на родителя:

function MyObj() {
    this.name = "abc";
}

MyObj.SubObj = function(parent) {
    this.parent = parent;
    this.x = 12345;
}

MyObj.SubObj.prototype.printName = function() {
    alert(this.parent.name);
}

new MyObj.SubObj(new MyObj()).printName();


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