Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 06.05.2015
Сообщений: 13

Наследование свойств от Object

05.03.2018, 17:08. Показов 1567. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Может сможет кто помочь?
Хочу задать для Object свойство propertyName (это переменная, может принимать любое значение), чтобы все наследники получили доступ к этому свойству. Потом для наследника Object - object пытаюсь изменить значение этого свойства, но вместо этого создается новое свойство для object.

JavaScript
1
2
3
4
5
6
7
const createNotEnumerableProperty = () => {
Object.defineProperty(Object.prototype, propertyName, {
  enumerable: true,
  configurable: true,
  writable: true,
  value: 'empty'});
return propertyName;}
Вот код в html:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</head>
 
<body>
 
<script src="final.js"></script>
  <script>
 
    const propertyName = 'property';
    const propertyValue = 'value';
 
    const property = createNotEnumerableProperty(propertyName);
    const object = {};
    object[property] = propertyValue;
 
  </script>
 
</body>
 
</html>
Добавлено через 1 минуту
Буду рада любым мыслям по этому поводу)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.03.2018, 17:08
Ответы с готовыми решениями:

Наследование свойств
Хотелось бы описать 1 функцию в базовом классе типа: void func(){ procedure( a ); } , где &quot;a&quot; представляет собой что-то типа: ...

Наследование свойств компонентов
возник небольшой вопросик (чистое любопытство) такого плана: допустим возьмём любой компонент формы, напр кнопку - Button1, у неё есть...

Группировка свойств своего компонента в Object Inspector
Как можно сгруппировать свойства в собственном компоненте при создании? Т.е. как на примере свойства Font, где по нажатию на...

7
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
05.03.2018, 21:19
Настя1996, То как я понимаю. Пусть меня профи поправят.

Вы уровнем ошиблись. Вы определяете свойство у window.Object, а переопределить пытаетесь у window.Object.Object.object - смотрите, закроем перечисление для ясности
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const createNotEnumerableProperty=()=>{
  Object.defineProperty(Object.prototype, propertyName,{
    enumerable: false,
    configurable: true,
    writable: true,
    value: 'empty'});
  return propertyName;}
 
const propertyName = 'property';
const propertyValue = 'value';
 
const property = createNotEnumerableProperty(propertyName);
const object = {};
Object.prototype.property = propertyValue;
console.log(Object.getOwnPropertyNames(Object.prototype),Object.prototype.property,Object.getOwnPropertyNames(object),object.property);
console.log(Object.keys(Object.prototype),Object.prototype.property,Object.keys(object),object.property)
Песочница
Миниатюры
Наследование свойств от Object  
1
 Аватар для Egor.S
215 / 180 / 79
Регистрация: 02.10.2011
Сообщений: 651
05.03.2018, 21:41
Если я правильно понял, то вы пытаетесь поменять свойство родителя через потомка, а так делать нельзя.

А может я не так понял)
1
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
05.03.2018, 21:50
Egor.S, почти - не родителя, а прародителя и не нельзя, а не получится
1
0 / 0 / 0
Регистрация: 06.05.2015
Сообщений: 13
05.03.2018, 22:53  [ТС]
Egor.S, я пытаюсь унаследовать свойство родителя и поменять его значение (value) для потомка. При этом мне нужно, чтобы все остальные параметры свойства ( enumerable, configurablе, writable) у потомка сохранились. И я вобще никак не могу это сделать(

Добавлено через 3 минуты
Egor.S, при этом принципиально важно оставить синтаксис вызова функции createEnumerableProperty таким
JavaScript
1
2
3
4
5
const propertyName = 'property';
    const propertyValue = 'value';
    const property = createEnumerableProperty(propertyName);
    const object = {};
    object[property] = propertyValue;
То есть менять мне можно только внутренности функции createEnumerableProperty

Третий день сижу на этом, если честно
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
05.03.2018, 23:53
Настя1996, вам надо начать с простого примера и не лезть пока в дебри. Тем более, что расширять глобальные объекты на уровне ваших знаний (да и моих чего уж там) вообще плохая идея. Если конечно вы не пишите какой-нибудь Sugar с минимальным кол-вом зависимостей.
Собственно пример -
JavaScript
1
2
3
4
5
var z={a:1,b:2}//создали объект с собственными свойствами
z.prototype={c:3,d:4}//определили собственные свойства прототипа 
z.prototype.prototype={e:5}// еще выше
console.log("свойства будут перечисляемы только на уровне одной ступени\n",z);
console.log("проверяем\n",z.prototype)
продолжение следует....
Миниатюры
Наследование свойств от Object  
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
06.03.2018, 00:23
...
Миниатюры
Наследование свойств от Object  
0
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
06.03.2018, 01:20
А вот что нужно вам по сути было.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
var z={a:1,b:2}//создали объект с собственными свойствами
console.log(z);
z.__proto__={c:3,d:4}
Object.defineProperty(z.__proto__, 'd', {
  enumerable: true,
  configurable: true,
  writable: false
});
z.__proto__.d=99999999;
console.log(z);
z.d=999999999;
console.log(z);
Есть офигенная разница между __proto__ и .prototype Она в состоит в том, что при создании объекта без new - .prototype становится обыкновенным свойством. А теперь тут же смотрим в первый пример постом выше.

Добавлено через 6 минут
А при создании объекта через new, .prototype записывает в его прототип __proto__ ссылку из ф-ии - конструктора.
JavaScript
1
2
3
var a={x:1, function Copy(){}}
Copy.prototype=a;
var b=new Copy();
Добавлено через 7 минут
fix
Поправка
JavaScript
1
2
3
4
5
var a={x:1};
function Copy(y){this.x=y}
Copy.prototype=a;
var b=new Copy(3);
console.log(b)
Добавлено через 1 минуту
Теперь с учетом этих знаний, посмотрите на свой код.

Добавлено через 12 минут
Также вместо new можно использовать Object.create()
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.03.2018, 01:20
Помогаю со студенческими работами здесь

Отображение свойств созданного компонента в Object Inspector
Здравствуйте дорогие форумчане , изучаю создание компонентов , столкнулся с такой проблемой , при указании своих свойств , некоторые из них...

Темы. Наследование свойств элементов
В теме указываем стиль для кнопок: &lt;style name=&quot;AppThemeDark&quot; parent=&quot;@android:style/Theme.Black&quot;&gt; &lt;item...

Наследование базовых свойств usercontrol
Всем доброго дня суток! Был создан новый usercontrol, наследуемый от minthcalendar. Однако базовые свойства monthcalendar на форме с...

Не работает наследование свойств в CSS коде
Всем привет! Изучаю HTML и CSS. Обучаюсь по видео-урокам. Прохожу тему наследование свойств и каскадность. По примеру написала код, а он...

Наследование функций и свойств. Немного не пойму
Вот код: class Point { private $y = 0; public function getY() { return $this-&gt;y; } } class Child...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru