Алексей
в чем его суть
Denis
Алексей
ох ё
Алексей
Конструктром у объекта будет всегда либо он сам(если функция), либо то, от чего он создался с помощью new?
Алексей
А почему у Rabbit.constructor == Function? Потому что Rabbit это инстанс Function?
Алексей
console.log(Rabbit.constructor.prototype === Rabbit.__proto__) // true
Алексей
я понял...
Алексей
ох уж этот js
Алексей
а в чем смысл instance.constructor, если есть instance__proto__?
Алексей
у меня диссонанс
Denis
`__proto__` как бэ скрытое свойство и его можно юзать только при острой нужде
Алексей
Поэтому прототип лучше узнавать по instance.constructor?
Алексей
У него же нет prototype
Denis
А зачем тебе прототип?
Denis
Ваще надо проверять через instanceof
Denis
Если тебе нужно имя класса, то this.constructor.name
Denis
Но не стоит делать проверку наподобиe if (this.constructor.name === 'SomeClass') Это очень вероятно что сломается при минификации
Anonymous
Алексей
Да я просто логику хочу раскусить
Алексей
Этого instance.constructor
Алексей
просто интересно
Denis
Правильно делать javascript import SomeClass from '../' // ..... if (instance instanceof SomeClass)
Anonymous
Этого instance.constructor
class Test { constructor() { console.log(this.constructor === Test) } } new Test()
Denis
javascript const Test = function () { console.log(this.constructor === Test) }
Алексей
вот теперь мне по-настоящему больно: ES6 не дает понять ES5 конструкторы
Алексей
Ибо в первом примере true, во втором false
Denis
Anonymous
Dika
javascript const Test = function () { console.log(this.constructor === Test) }
в es6 можно использоватать new.target === Test
Denis
в es6 можно использоватать new.target === Test
Да, спасибо. Но я там одинаковость показывал с предыдущим примером ))
Алексей
const Test = function () { console.log(this.constructor === Test) // true } new Test() console.log(Test.constructor === Test) // false
Алексей
а, туплю
Алексей
Спасибо!
Anonymous
Алексей
да, я теперь понял, что Test instanceof Function, поэтому Test.constructor === Function, а при создания пустого инстанса конструктор будет Test
Алексей
или не так?
Алексей
console.log(Test.constructor === Function) // true
Denis
Алексей
Мой мозг требует объяснения на уровне абстракции
Алексей
Я умом понимаю как работает
Алексей
Но мозг ломается без логического человеческого объяснения)
Denis
Denis
https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Classes/constructor
Алексей
я читал это)
Алексей
Мне интересно, почему статичный конструктор без new указывает на конструктор уровнем выше, а в prototype.constructor ссылается на себя?
Алексей
const Test = function () { } console.log(Test.constructor.name) // Function console.log(Test.prototype.constructor.name) // Test
Алексей
спасити
Алексей
памагити
Алексей
диссонанс
Denis
Статический. И это шутка была
Алексей
зато верно описывает
Denis
Не выше, а ниже
Алексей
если в виде дерева, то верно
Алексей
Больно интересно
Anonymous
https://learn.javascript.ru/class-inheritance
Алексей
Спасибо
Denis
http://ghv.artzub.com/#repo=syntax-highlighter-bot&climit=100&user=piterden
Denis
Это визуализатор репозитория бота подсветки
Anonymous
Интересное отображение статистики
Denis
Смотри, чувак выложил резюме и кричит что он сеньор
Denis
http://ghv.artzub.com/#user=mqklin http://ghv.artzub.com/#user=piterden
Denis
Тут наглядно видно
Anonymous
ну круто
Николай
чуваки, короче поставил react app, запускаю билд, вылетает ошибка error eslint@5.12.0: The engine "node" is incompatible with this module. Expected version "^6.14.0 || ^8.10.0 || >=9.10.0". Got "8.9.4" error Found incompatible module
Николай
уже кучу раз переустановил node modules, отовсюду убрал eslint, его вообще нигде сейчас нет
Николай
ничего не нагуглил, мб кто знает тут
Denis
Ноду же обнови
Denis
У тебя 8.9.4, а из 8-х минимальная 8.10.0
Николай
окей, сэнкс
Denis
окей, сэнкс
Ставь 10 или 11 лучше
Denis
Последнюю LTS - не ошибешься
Николай
да, помогло, спасибо)