Значение this
не будет работать таким образом, оно относится к значению, определенному фактическим контекстом выполнения, а не к вашему литералу объекта.
Если вы, например, объявляете член функции вашего объекта,Вы можете получить желаемый результат:
var closure = {
myPic: document.getElementById('pic1'),
getPicArray: function () {
return [this.myPic];
}
};
//...
closure.getPicArray();
Поскольку значение this
внутри функции getPicArray
будет ссылаться на ваш closure
объект.
См. thisответьте на другой вопрос, где я объясню поведение ключевого слова this
.
Редактировать: В ответ на ваш комментарий в приведенном мною примереgetPicArray
метод будет генерировать новый объект Array каждый раз, когда он вызывается, и, так как вы хотите сохранить массив и внести в него изменения, я бы порекомендовал вам что-то вроде этого, создайте ваш объект в два этапа:
var closure = {
myPic: document.getElementById('pic1')
};
closure.picArray = [closure.myPic];
Затем вы можете без проблем изменить элемент closure.picArray
.