Страницы

Поиск по вопросам

вторник, 25 февраля 2020 г.

Javascript свойства обьектов

#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());

Комментариев нет:

Отправить комментарий