Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 05.03.2018, 23:53
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

Не совсем понял что значит не сохраняет?
<script> 
s = "";
s+= "A = {} -------------------------> "+ eval("A = {}")  +"<br>";
s+= "A.__proto__.test = AAA ------> "+ eval('A.__proto__.test = "AAA"')  +"<br>";
s+= "B = {} -------------------------> "+ eval("B = {}")+"<br>";
s+= "B.test --------------------------> "+eval("B.test")+"<br>";
s+= "B.test = 321 -------------------> "+eval("B.test = 321")  +"<br>";
s+= "B.__proto__.test --------------> "+ eval("B.__proto__.test")  +"<br>";
s+= "B.__proto__.test = BBB ------> "+ eval("B.__proto__.test = 'BBB'")  +"<br>";
s+= "A.__proto__.test --------------> "+ eval("A.__proto__.test")  +"<br>";
s+= "A.test ---------------------------> "+ eval("A.test")  +"<br>";
s+= "B.test ---------------------------> "+ eval("B.test")  +"<br>";


document.write(s)

</script>


Совсем непонятно зачем это нужно. Если хочешь отловить обращение к несуществующим свойствам смотри в с торону https://learn.javascript.ru/proxy

Последний раз редактировалось MallSerg, 06.03.2018 в 00:05.
Ответить с цитированием
  #12 (permalink)  
Старый 06.03.2018, 01:23
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

375291601334,
Прототипное наследование - прототипное. При обращении к свойству объекта - оное ищется сначала в самом объекте, потом в прототипе родителя, потом в прототипе родителя родителя итд. И устанавливается свойство по умолчанию тоже прямо в текущий объект. Всё очень просто и прямо. Надо изменить свойство в родителе - вот в прямо прототипе родителя его и изменяй.)
Ну или можно воспользоваться кривой современной реализацией классов и словом "super".

Ещё в качестве костыля - можно это твоё propertyName сделать геттером/сеттером и, соответственно, уже там менять нужное значение.
__________________
29375, 35
Ответить с цитированием
  #13 (permalink)  
Старый 06.03.2018, 10:14
Новичок на форуме
Отправить личное сообщение для 375291601334 Посмотреть профиль Найти все сообщения от 375291601334
 
Регистрация: 05.03.2018
Сообщений: 9

Aetae,
спасибо) про геттер/сеттер крутая мысль, надо попробовать
Ответить с цитированием
  #14 (permalink)  
Старый 06.03.2018, 10:49
Новичок на форуме
Отправить личное сообщение для 375291601334 Посмотреть профиль Найти все сообщения от 375291601334
 
Регистрация: 05.03.2018
Сообщений: 9

Aetae,
Вот таким образом все получилось:
const createNotEnumerableProperty = () => {
Object.defineProperty(Object.prototype, propertyName, {
get: function() { return result; },
set: function(value) { result = value;    },
  enumerable: true,
  configurable: true                       });
return propertyName;
};

Спасибо всем огромное!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ajax запрос к Wcf сервису возвращает Object Object Itogoo333 Общие вопросы Javascript 6 13.01.2016 03:02
Множественное наследование, супер методы, наследование дескрипторов nerv_ Оффтопик 28 19.03.2014 20:48
динамическое обновление свойств объекта в цикле grego Общие вопросы Javascript 3 04.12.2013 23:29
Борьба с Object.defineProperty в IE8 FINoM Оффтопик 46 04.09.2012 23:45
функция копирования свойств zzz Общие вопросы Javascript 44 17.08.2009 12:04