Цитата:
|
Цитата:
Во втором - p1.__proto__ ссылается на предыдущий Person.prototype, который был заменен новым объектом уже после создания p1. И потому p1 более не считается экземпляром Person, с точки зрения прототипного ООП. Второй случай вполне допустим, только заменять Person.prototype надо сразу же при создании функции Person, до создания экземпляров. И не забыть туда свойство constructor поместить, о чем ранее говорилось. Тогда всё будет нормалёк. Ну а ежели какое наследование замутить изволите, то там особо без вариантов: Person.prototype = Object.create(ParentClass.prototype); и далее добавление методов по первой схеме. |
Цитата:
Вот что там действительно новое - "методы, привязанные к объектам". Штука в целом полезная и нужная. https://learn.javascript.ru/es-object#методы-объекта |
Цитата:
|
Цитата:
https://learn.javascript.ru/es-class...войства Цитата:
function createClass() { 'use strict'; class User { constructor(name) { this.name = name; } sayHi() { alert(this.name); } } return User; } function createObject(Class, param) { return new Class(param); } var User = createClass(); var user = createObject(User, "UserName123"); user.sayHi();есть так же Class Expression, в общем, всё как положено. Цитата:
|
Цитата:
В нормальных ЯП с этим проблем нет. Там Вы писали бы что то такое theTimeout = Timeout.create theTimeout.a = 1 object = { a: 10, fu1: staticFunction(){alert(a)}, fu2: dynamicFunction(){alert(a)} } theTimeout.addOnTimeout(object.fu1) theTimeout.addOnTimeout(object.fu2) //>>>1, 10 |
Цитата:
|
Цитата:
|
Яростный Меч,
Да, я наверное, плохо ознакомился, частично я не прав, тем не менее. Классы нельзя считать первоклассными сущностями уже потому, что их протокол отличается от объектного. В них нельзя иметь проперти. Насколько я подозревю, ими нельзя манипулировать с помощью Object.defineProperty, так? Они, вероятно, не поддерживают проксирование. Сабклассинг неуклюж, всегда надо забивать голову оверррайдами. Требуют строгого режима. Если там копнуть глубже, всплывет еще куча дерьма. Все равно при "классовом" подходе теряется гибкость. Я могу на коленке реализовать такие классы за пять минут, но могу и другие, с другой семантикой, ничего это не дает, по сути, просто еще один костыль. |
Яростный Меч,
Единственное ощутимое преимущество -- эт унификация кода в ынтырпрайзе. Но меня это не касается лично:) |
Часовой пояс GMT +3, время: 18:01. |