| 
 Вызов глобального this 
var obj = {
 'name': 'abc',
 'subobj': {
  'a': function() {
   alert(this.name); // abc
  }
 }
}
Как такое реализовать? Не через obj.name, а как-нибудь через this или что-то подобное. | 
| 
 ukhov, оно? 
'a': function() {
   alert(window.name); 
  }
а лучше прочитайте http://learn.javascript.ru/function-basics и разберитесь сами | 
| 
 так window.* - это внешние переменные, а мне нужно в этом объекте | 
| 
 ukhov, хм, увидел, не сразу понял. Можно через bind или call (apply), но лучше скажите зачем? Если что бы не писать имя obj каждый раз то можно просто завести переменную self и записать тyда obj | 
| 
 Цитата: 
 Я вот ранее с JS не сталкивался, думал ерундовая задачка, как два байта переслать, ан нет! Уже пол часа ковыряю, тоже заинтересовало и что-то не удается достучаться из той функции к self 
var obj = {
                name: 'abc',
                self: this,
                subobj : {
                    a: function() {
                        alert(self.name); // тут я пробовал разное даже поля прописывал в subobj но ничего не вышло
                    }
                }
            }
В условии сказано, что передовать в функцию аргумент нельзя, и как тогда? | 
| 
 Покажите как вы хотели бы передать унутрнний контекст из одной проперти в другую без функции. Для прояснения разделим на две части. 
var obj = {name: 'abc', self: this};
// тут может быть туева хуча кода и внезапно
obj.subobj : {a: function() {alert(self.name);}};
Я сам в JS слаб на оба полушария, но если разведка донесла правду, то объекты без конструктора суксь и мастдай. Я блин как осел мучился с этими идиотскими зисами, повелся, типа на "статику", а оказалось в "динамике" в стопицот раз все проще. Чего и вам желаю. | 
| 
 ArtJS, что за наркомания? 
var obj = {
 'name': 'abc',
 'subobj': {
  'a': function() {
   var self = obj;
   alert(self.name); // abc
  }
 }
}
или 
var obj = {
 'name': 'abc',
 'subobj': {
  parent: obj
  'a': function() {
   alert(this.parent.name); // abc
  }
 }
}
 | 
| 
 Про var self = obj; признаться недодумался, спасибо! Просто JS специфический язык, не похожий на классическое представление ООП. А вот ваш второй пример ничего не выводит, в отличие от первого примера. И кстати, тогда уж и просто alert(obj.name);прокатит. Это повезло что мы объявили этот объект. А если создавать их несколько с помощью конструктора еще не факт, что прокатит. | 
| 
 Как можно не догадаться до хардкора в условиях профтыкания массивов в массив ? :) | 
| 
 Цитата: 
 | 
| 
 Цитата: 
 Например для ЯП 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 объектов в виде массивов накладывает свои особенности, сразу непривычно | 
| 
 Цитата: 
 
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, время: 01:32. |