#javascript #объекты
Комментариями помечена проблема var obj = {a:2}; obj.b = 3; var obj2 = { y: obj.b + obj.a, d: y //не могу свойству d присвоить значение свойства y }; //obj2.d = obj2.y; //а вот так могу console.log(obj2.y); console.log(obj2.d); Не могу свойству d объекта obj2 присвоить значение свойства y этого же объекта.
Ответы
Ответ 1
Смотрите в чем ошибка: 1)this указывает на контекст исполнения, т.е когда вы делаете var obj2={ d:this.y } то, this указывает на объект window. 2) когда пишете так var obj2={ y: 'ололололо', d:y } то в цепочке областей видимости(Scope chain) переменной "y" нет, однако, если вы сделаете так: var y = '2' var obj2={ y: 'ололололо', d:y } то получите свойство "d" со значением 2. Новое звено в цепочке видимости происходит при вступление в новый контекст исполнения... Можете использовать конструктор, тогда this будет указывать на новоявленный объект: function Foo(){ this.x = 'lol', this.y = this.x } b = new Foo(); console.log(b.y)Ответ 2
оно? var obj = { 'a': 2, 'b': 3 } var obj2 = { y: obj.b + obj.a, get d() { return this.y; }, }; console.log(obj2.y); console.log(obj2.d);Ответ 3
Оно? var obj={a:2}; obj.b=3; var obj2={ y:obj.b+obj.a, d:function(){return this.y}//не могу значению свойства d присвоить значению свойства y }; console.log(obj2.d());
Комментариев нет:
Отправить комментарий