2017-02-20 3 views
0

Я пытаюсь создать массив внутри объекта, содержащего переменные из этого объекта, используя это, но я получаю сообщение об ошибке. Я использую это неправильно? Thx за помощьСоздайте массив внутри объекта, содержащего значения из объекта

var data = { 
    p: [{content: "p", 
      text: "this is random text" }, 
      {content: "p", 
      text: "this is a second random text" 
     }], 
    img: [{content: "image", 
      src: "data/img/1_1.png", 
      alt: "This a an image"}, 
      {content: "image", 
      src: "data/img/1_2.png", 
      alt: "This is the second image"}], 
    title: {content: "title", 
      text: "Ceci est un titre"}, 
    //This doesn't work 
    all: [this.title, this.p[0], this.img[0], this.p[1], this.img[1]] 
} 
//But this works 
console.log(data.title); 
console.log(data.p); 
console.log(data.img); 
+2

Вы не можете обращаться к другим частям объекта «under construction». – Pointy

+0

Каков контекст «этого» в вашем коде? обратите внимание на это. – tfidelis

+1

Зачем хранить избыточную информацию, когда вы можете легко построить массив 'all' на лету? – Damon

ответ

0

this ключевое слово не указывает на ваш текущий объект до тех пор, пока не будет построен.

Я предполагаю, что this относится к следующей самой большой области или к объекту Window в вашем случае.

Быстрый тест в консоли браузера:

var a = {"test": this}; 
console.log(a["test"]); //Window 

Вы бы лучше сделать этот запрос на лету, когда вам нужны данные агрегируются таким образом, или найти лучший способ для заполнения этого имущества.

Смежные вопросы