Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.09.2017, 16:11
Новичок на форуме
Отправить личное сообщение для DGGDAK47 Посмотреть профиль Найти все сообщения от DGGDAK47
 
Регистрация: 08.06.2017
Сообщений: 6

Ошибка в геттере
В чем тут ошибка??? Может у меня что-то не так с браузером и я предоставлю еще и скрин.

<script>
       var ob={
           i:null,
           set i(p){ i=p;},
           get i(){ return i;},
       }
       
       ob.i;
    </script>
Изображения:
Тип файла: jpg Безымянный.jpg (11.5 Кб, 5 просмотров)
Ответить с цитированием
  #2 (permalink)  
Старый 11.09.2017, 17:09
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

<script>
       var ob={
           i:null,
           get iGet(){ return this.i;},
           set iSet(p){ this.i=p;}
       }     
       alert(ob.i);
       ob.i = "Test";
       alert(ob.i);
</script>

Последний раз редактировалось Dilettante_Pro, 11.09.2017 в 17:12.
Ответить с цитированием
  #3 (permalink)  
Старый 11.09.2017, 17:15
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

DGGDAK47,
может так ?
<script>
  "use strict";
       var ob={
           y:null,
           set i(p){ this.y=p;},
           get i(){ return this.y;}
       }
       alert(ob.i)

  </script>
Ответить с цитированием
  #4 (permalink)  
Старый 11.09.2017, 17:19
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

Dilettante_Pro,
alert(ob.iGet); ???
Ответить с цитированием
  #5 (permalink)  
Старый 11.09.2017, 19:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

DGGDAK47,
<script>
  "use strict";
       var ob={
           set i(p){ this.y=p;},
           get i(){ return this.y;}
       }
       Object.defineProperty(ob, "y", {value: null,enumerable: false, writable: true});
       alert(ob.i)
       alert(Object.keys(ob))
  </script>
Ответить с цитированием
  #6 (permalink)  
Старый 11.09.2017, 19:52
Новичок на форуме
Отправить личное сообщение для DGGDAK47 Посмотреть профиль Найти все сообщения от DGGDAK47
 
Регистрация: 08.06.2017
Сообщений: 6

Сам спросил - сам ответил
Позже я разобрался как ето работает (геттеры и сеттеры) и сейчас я это опишу.может пригодится кому...

Создавая аксессоры get и set-подразумевается,что при вызове set,он создаст нужное свойство,равное имени связанных аксессоров и нужного свойства,с которым они будут работать,между собой.Они перекроют ранее созданное свойство,с таким же именем и поэтому не нужно создавать свойство для них.

Моя ошибка была в том,что я создал отдельно свойство и думал,что создав аксессоры,они свяжутся с ним по имени,но они его перекрывали.Это и объясняет,что в get я вызывал return на несуществующее свойство,до вызова set.

Надеюсь кому-то этот материал поможет,лол.
Помимо этого,еще следует ознакомиться с атрибутами свойств.
Ответить с цитированием
  #7 (permalink)  
Старый 12.09.2017, 11:43
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

рони,
Сообщение от рони
Dilettante_Pro,
alert(ob.iGet); ???
<script>
       var ob={
           i:null,
           get iGet(){ return this.i;},
           set iSet(p){ this.i=p;}
       }     
       alert(ob.iGet);
       ob.i = "Test";
       alert(ob.iGet);
</script>

Последний раз редактировалось Dilettante_Pro, 12.09.2017 в 11:45.
Ответить с цитированием
  #8 (permalink)  
Старый 12.09.2017, 12:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,123

Dilettante_Pro,
вы создали новое свойство , мой вариант тот же(но дополнительное свойство "спрятано" enumerable: false,).
хотя как сказано выше достаточно было так
var ob={
           set i(p){ i=p;},
           get i(){ return i;}
       }
       ob.i=null;//сначала установить значение
       alert(ob.i);
Ответить с цитированием
  #9 (permalink)  
Старый 12.09.2017, 14:00
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

рони,
Ну а у меня все свойства доступны - чем больше, тем лучше !
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при AJAX запросе при переходе на HTTPS "This request has been blocked.." WhiteFalke AJAX и COMET 0 26.12.2016 22:29
firebug пишет ошибка invalid range in character class Dim@ Общие вопросы Javascript 5 10.05.2012 16:52
ошибка NS_ERROR_DOM_SECURITY_ERR h0kum Events/DOM/Window 2 18.12.2010 20:01
То-ли лыжи не едут, толи... возможно ошибка в коде. AzriMan Общие вопросы Javascript 19 18.05.2009 16:07
IE: неизвестная ошибка выполнения _Kpot_ Internet Explorer 1 03.04.2008 11:00