2015-07-08 2 views
0
var ok = { 
    makeScreens: function() { 
    this.screens = { 
     x: 2, 
     y: this.x * 10; 
    }; 
    } 
} 

Я хочу, чтобы инициализировать this.screens переменную, но я не могу обратиться к х, когда я инициализацией у. Может кто-то сказать мне, как обратиться к this.screens.x? спасибо.JavaScript инициализировать объект, используя сложную ссылку

+0

* this.screens * не является переменной. * this * - это параметр контекста выполнения, который в нестрогом режиме всегда ссылается на объект. Итак * this.screens * - ссылка на свойство объекта. – RobG

+0

Большое спасибо. – zhy1378

ответ

1

Вы не можете. Вы должны будете сделать это в два этапа:

var ok = { 
    makeScreens: function() { 
    this.screens = { 
     x: 2 
    }; 

    this.screens.y = this.screens.x * 10; 
    } 
} 
+0

Или 'var x = 2; this.screens = {x: x, y: x * 10}; '. ;-) – RobG

+0

Большое спасибо. – zhy1378

-1

Другая вещь, которую вы могли бы сделать, это использовать конструктор:

var ok = { 
    makeScreens: function() { 
    this.screens = new (function(){ 
     this.x = 2; 
     this.y = this.x * 10; 
    })(); 
    } 
} 
+0

Вы попробовали? * x * не определено, и IIFE возвращает * undefined *, поэтому * new * тоже будет терпеть неудачу. – RobG

+0

мой плохой. вы правы, я не пробовал. исправлено x, хотя я немного удивлен x не определено. Должен был google IIFE. Это считается ИИХФ? Вызов происходит за пределами анонимной функции parens, на 'new', я думаю. – xdhmoore

+0

[Пожалуйста, не делайте этого] (http://stackoverflow.com/a/10406585/1048572) – Bergi

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