Продвинутый javascript 3 - Прототипное наследование

preview_player
Показать описание

В этом видео мы наконец познаем саму тайну тайн javascript, а именно:
- что же такое прототип?
- что такое наследование?
- что такое прототипное наследование?
- и самое главное - как им пользоваться?

Больше уроков от lofblog: #loftblog
Все уроки по хештегу: #loftblogJS
Полезные уроки для веб-программиста: #вебпрограммист
#javascript

Поставь лайк - смотивируй автора писать еще :)
Рекомендации по теме
Комментарии
Автор

Самый главный вопрос не раскрыт - когда нужно использовать наследование? Везде пишут про зверей, людей, и про другие сущности, но про то, где конкретно его (наследование) можно применить в web разработке не встречал. Этот урок был бы в сто раз полезнее если бы вы на практике показали что для такой-то задачи нужно использовать наследование, а для такой-то в нём нет необходимости.

alekseib
Автор

Приятно, когда на протяжении всего видео, все понятно. Единственно есть нюанс на всех курсах JS - звук, школьник на телефон лучше звук запишет )). В остальном все гуд!

Selicium
Автор

Благодарю за уроки! Вы очень доступно излагаете материал.

evgenykrivosheev
Автор

СПАСИБО!!!! С ПРОТОТИПАМИ МНЕ НА МНОГО БОЛЬШЕ ПРОЯСНИЛОСЬ ИМЕННО ПОСЛЕ ВАШЕГО УРОКА!

denli
Автор

интерестная тема, не зря подалась во фронтенщики)) спасибо LoftBlog. А у нашей "чики" это супер)))

kristinaazizova
Автор

Хороший урок - хоть и ранее знал об особенностях оператора new, но делал это как-то инструкции, а момент с this.__proto__ = Foo.prototype окончательно поставил все на свои места.

viktorsoroka
Автор

Просмотрел урок первый раз - ничего не понял. Пересмотрел кучу других видосов на ютубе, потом вернулся к этому уроку и все встало на свои места.

victorianFella
Автор

На 21:06 на строке 51 и 52 почему вы в прототип передаете переменную wolfy, а не сам Wolf? Так нельзя?
А еще, почему то что на 47 строке нельзя было сразу записать на 36 через this?
Буду очень благодарен за ответы

ВладимирНетот
Автор

Так и не понял почему волки начали кукарекать. Единственная догадка - это что присваивая новый метод для Chiken.prototype залезли в обьект энимал, а вот как добавить метод в функцию-конструктор - так и осталось загадкой. Разве что создать новую функцию с методом и добавить еще 1 уровень наследования уже от обьекта сhickу. И что бы все новые курецы кукарекали - уже создавать их как экземпляры от новой функции

XaMJIo
Автор

У меня почему то после того как установил прототип - то не показывает "ключ-значение" прототипа в обьекте.
Но в свойстве _proto_ - есть этот унаследованный обьект со свойствами((
wolf {name: "Волк"}
name: "Волк
"__proto__: Object
canRun: true
__proto__: Object

artemtravlo
Автор

очень много не правильно называл вещи. в самом начале ты присвоил переменной boo = new Foo(); и сказал что boo отнаследовало... какое тут было наследование если ты просто присвоил обьект созданый функцие конструктором... Наследование это когда один класс наследует свойства и методы от другого класса (родительского)

volodymyrzaiets
Автор

А как конструктор наследует свойства объекта? Получается помимо this.__proro__ = foo.prototype, он получает еще одно свойство __proto__

ДмитрийВалуев-фф
Автор

JS не перестаёт меня удивлять ) Почему, если добавить объект через прототип к конструктору, затем добавить еще один метод к этому же конструктору (опять же через прототип) всё нормально работает. Но если к этому же конструктору добавить новый объект, то все предыдущие, унаследованые методы и свойства затираются ))

barrettM
Автор

Какой-то неудобный синтаксис наследования в js)

FRIS
Автор

написал много своего, вроде понятно когда писал код, но легко запутаться. Но думаю если попрактиковаться, то все будет ок

mackaybravo
Автор

ЗНАТОКИ, к вам вопрос ! ! !
Все рассматривают стандартное присвоение свойств name, age, number новым объектам с помощью функций конструкторов...., меня интересует, как правильно написать код, чтобы в каждом новом созданном мною, помимо простых (к примеру) свойств name age и.т.д в объекте отображалось рандомное число от 1 до 10:
короче, посмотрите на мой код и подскажите, что я не так делаю...

function lol(name, random){
this.name = name
this.random = // Вижу, что здесь что-то ну прям категорически не правильно, но не знаю как написать правильно
}

var A = new lol("Виталик") // И как мне присвоить значение объекту, если это рандомное значение?
var B = new lol("Adam")
var C = new lol("Алёша")

function alt( obj ){
for( var s in obj ){
document.write( s + ">>>" + obj[s] + "<br>" )
}
}

alt(A)
alt(B)
alt(C)

alert(" Благодарю заранее, не судите строго ;)" )

TheKirk
Автор

Урок хороший, мне понравился, но ты что под конец уже засыпать начал? что-то бормочешь и очень тихо и невнятно говоришь, и еще понравилось наблюдать за часами справа сверху)

СергейГуменюк-бь
Автор

все волки закукарекали ваще прикольно не запктано!

ivansofronov
Автор

и вообще я конечно все понимаю но это не наследование как такое, к классическом паттерне наследование реализуется с помощу создания промежуточной функции конструктора, и суть такова что конструктор класса создает новый обьект который имеет доступ через прототипную ссылку к свойством родительского класса, в функциональном паттерне это реализуется функцией которую во многих библитеках включая jquery называют extend - функция которая копирует все свойства и методы родителя и добавляет ребенку. Очень смутило это видео,  когда то смотрел твои другие видео и подчерпывал для себя новое, а это видео вводит людей в заблуждение

volodymyrzaiets
Автор

черт возьми, получается, что когда создаем объект через new, он наследует свойства, как и prototype? черт черт черт.кто сможет объяснить, в чем разница назначать свойства через prototype, где все экземпляры эти свойства будут наследовать, и дописать это самое свойство в нашу функцию-конструктор, где также все экземпляры смогут унаследовать?

highfivebear