Есть код такого плана:
var objParent = {
text: 'Нужное значение',
objChild: {
context: this,
context1: objParent,
text: 'Ненужное значение',
needHere: function(){
console.log(this.text);
console.log(this.context.text);
console.log(this.context1.text);
// Ниодин из вариантов не дает нужного значения
},
},
}
objParent.objChild.needHere()
Надо получить значение из объекта родителя, находясь в объекте дитя. Как это можно сделать?
Можно использовать функцию-конструктор для создания объекта.
function CreateObject() {
var objParent = {
text: 'текст',
objChild: {
needHere: function() {
console.log(this.context.text);
}
}
};
/* присваиваем, определяем контекст в необходимое место */
objParent.objChild.context = objParent;
return objParent;
}
var objParent = CreateObject();
objParent.objChild.needHere();
Единственный способ в литерале объекта обратиться к нему же с помощью this
- это использовать функцию, либо более удобную запись - getter. (подробнее про определение this
в вопросе Потеря контекста вызова)
При этом доступ будет только к самому объекту, но не к родителю (на самом деле тут имеется ввиду контейнер).
Для доступа к родителю необходимо указать ссылку на него напрямую
var objParent = {
text: 'Нужное значение',
objChild: {
get context() {
return this; // вернет objChild
},
get context1() {
return objParent; // вернет значение переменной objParent на момент вызова
},
text: 'Ненужное значение',
needHere: function() {
console.log(this.text);
console.log(this.context.text);
console.log(this.context1.text); // нужное значение
},
},
}
objParent.objChild.needHere()
На клиенте в браузере выводятся изображения фотографий небольших размеров, например, 20 штук в формате :
Есть объектКак обратится через индекс как в массиве? Могу и понимаю как делать
При загрузке страницы, интервал стартует как надоЯ поставил кнопку для паузы интервала, но работает не так как надо