Алексей
в чем его суть
Denis
Алексей
ох ё
Алексей
Конструктром у объекта будет всегда либо он сам(если функция), либо то, от чего он создался с помощью new?
Алексей
А почему у Rabbit.constructor == Function? Потому что Rabbit это инстанс Function?
Алексей
console.log(Rabbit.constructor.prototype === Rabbit.__proto__) // true
Syntax Highlight Bot
Алексей
я понял...
Алексей
ох уж этот 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)
Syntax Highlight Bot
Syntax Highlight Bot
Denis
javascript
const Test = function () {
console.log(this.constructor === Test)
}
Syntax Highlight Bot
Алексей
вот теперь мне по-настоящему больно: ES6 не дает понять ES5 конструкторы
Алексей
Ибо в первом примере true, во втором false
Denis
Anonymous
Dika
Алексей
const Test = function () {
console.log(this.constructor === Test) // true
}
new Test()
console.log(Test.constructor === Test) // false
Алексей
а, туплю
Алексей
Спасибо!
Anonymous
Denis
Алексей
да, я теперь понял, что Test instanceof Function, поэтому Test.constructor === Function, а при создания пустого инстанса конструктор будет Test
Алексей
или не так?
Алексей
console.log(Test.constructor === Function) // true
Anonymous
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
Anonymous
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
Последнюю LTS - не ошибешься
Николай
да, помогло, спасибо)