The '__proto__' property is deprecated. (W103) jshint
Всем привет. В общем и целом: The '__proto__' property is deprecated. (W103) - вот такую PROBLEMS'у выдает мне jshint в VSCode редакторе, когда я пытаюсь сделать один объект прототипом другого объекта следующим способом:
let cat = {
hp: 580,
food = 1000
}
let dog = {
hp: 100
}
dog.__proto__ = cat;
Почитал про prototype и __proto__. Одно для функций, другое для объектов. Xочется избавиться от проблемсы этой, как можно это сделать?
Ответы (1 шт):
Возможно, вам и правда будет проще использовать синтаксический сахар классов. Но если вам не нужна вся механика классов, а нужно простое наследование, есть другие варианты.
Чтобы не получать подобных сообщений, можно использовать
Object.setPrototypeOf(). Но как вы прочитаете в статье по ссылке, изменение прототипа объекта после создания неэффективно.Можно использовать
Object.create()с одним аргументом, создав пустой объектdogи потом изменить нужные свойства. Но если в подчинённом объекте вы хотите создавать свойства, которых нет в объекте-прототипе, это опять-таки не советуется разработчиками движков (по крайней мере V8) — добавление или удаление полей объекта после создания замедляет работу движка с этим объектом.Наиболее универсальный и немного более сложный путь — использовать
Object.create()со вторым аргументом, с объектом дескрипторов, в котором можно задать не только изменённые, но и новые свойства.