Какой шаблон проектирования ООП JavaScript наиболее полно использует (новые) возможности ECMAScript 5? - PullRequest
1 голос
/ 18 июня 2009

ECMAScript 5 находится в окончательном варианте и включает в себя новые функции, относящиеся к объектам и прототипам. Охотясь на SO и Google для шаблонов проектирования ООП, я обнаружил, что было довольно много разных способов «сделать ООП» (как бы вы ни определяли ООП, от попытки эмулировать классический ООП до простой попытки сократить загрязнение пространства имен) в JavaScript .

Какой шаблон проектирования наиболее перспективен по сравнению с направлением ECMAScript 5 в мире JavaScript? Каковы его основные преимущества? Что из этого было невозможно или так хорошо реализовать раньше?

Ответы [ 2 ]

3 голосов
/ 18 июня 2009

Я не думаю, что ECMAScript 5 меняет ландшафт для ООП в JavaScript. Классическая ООП все еще будет болтовой для людей, которые хотят ее использовать.

Реальная история, на мой взгляд, заключается в том, что когда утилита ECMAScript 4 была отменена, JavaScript и ActionScript расходились, и JavaScript НЕ будет добавлять классы так, как это делал ActionScript.

Я подозреваю, что библиотеки, которые поддерживают ООП (MooTools, Prototype и т. Д.), Будут в основном придерживаться того, что они делают, но, возможно, они могут использовать некоторые новые функции ECMAScript 5 в своих реализациях для укрепления вещей.

И мы, вероятно, продолжим видеть интересные подходы, такие как Joose и Class.js .

Помните, что это займет некоторое время. У нас все еще есть двузначный кусок людей, использующих IE6. Поэтому первые полезные места для использования ECMAScript 5, вероятно, будут на мобильных телефонах, серверах Adobe AIR и JavaScript, где браузер (в основном или строго) известен.

Джон Резиг опубликовал статью об изменениях объекта ECMAScript 5 здесь .

1 голос
/ 15 сентября 2009

Я думаю, что стандартизация Object.create позволит большему количеству людей использовать базовый ОО на основе прототипов без стыда. Попытка скрыть псевдоклассический синтаксис "new Foo" за оболочкой приводит к путанице в коде.

...