LINUX.ORG.RU

почему в JS принят такой стиль?

 ,


0

1

Я про классы. Когда мы пишем, например,

MyClass=function(){}
MyClass.prototype=someObject

следует, наверное, понимать, что классом тут является не MyClass, а MyClass.prototype, а MyClass является всего лишь конструктором, с опциональной инициализацией.

Соответственно, мы с тем же успехом можем писать

MyClass={
 create: function(){return Object.create(this)},
 //enother fields here
}
ну и в create мы можем опционально также инициализировать поля.

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

Кроме всего прочего, во втором варианте код всегда лаконичней и ясней.

Почему массово принято это извращение? Это связано с оптимизацией, или что?



Последнее исправление: javaQest (всего исправлений: 3)

Object.create() доступен только с ie9. В старые времена (когда поддержка ie6 должна была быть) все обучающие статьи рассказывали про наследование в стиле:

Cat.prototype = new Mammal();
Вот поэтому можно встретить оба стиля и старый и новый.

Mironor
()
Ответ на: комментарий от dexpl

Нулевой объект имеет тип «объект».
OK, но причем тут null?

А ведь, действительно, какое отношение имеет null к null

javaQest
() автор топика
Ответ на: комментарий от dexpl

Тут нет никакого противоречия. null действительно не является экземпляром Object, он стоит на вершине иерархии. Чем ты не доволен?

javaQest
() автор топика

Вот прекрасный форум для обсуждения этого и многих других вопросов http://0chan.cc/c/

anonymous
()
Ответ на: комментарий от javaQest

Объявление класса выглядит как говно. Не то что нормальные ООП языки.

anonymous
()
Ответ на: комментарий от javaQest

Ваше определение относится к математике, или вообще?

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

следует, однако, учитывать, что контекст важен. два объекта, будучи изоморфными в одной категории, могут быть неизоморфными в другой

jtootf ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.