Ответ 1
Prototype имеет много замечательных функций, включая Class помощник, который обрабатывает детали "наследования" JS через прототип объекта.
Edit: Черт, я все время забываю, что jQuery (моя собственная библиотека выбора) имеет jQuery.extend
В рекомендации Штабелеров я читал Крокфорда превосходный Javascript: Хорошие детали.
Это отличная книга, но так как большая часть ее посвящена описанию наилучшего способа использования базовых функций Javascript, я не уверен, как я могу применить его совет на практике, не дублируя усилия многих других программистов Javascript.
Возьмите этот отрывок, например:
Когда вы создаете новый объект, вы можете выбрать объект, который должен быть его прототипом. Механизм, который Javascript предоставляет для этого, грязный и сложный, но его можно значительно упростить. Мы добавим метод
create
к функцииObject
. Методcreate
создает новый объект, который использует старый объект в качестве своего прототипа.if (typeof Object.create !== 'function') { Object.create = function(o) { var F = function () {}; F.prototype = o; return new F(); }
Я мог бы вручную добавить этот код ко всем моим проектам Javascript, но отслеживать все было бы огромной болью.
Существуют ли библиотеки, которые реализуют рекомендации "Хорошей части" и тем самым избавляют меня от необходимости отслеживать их (/физически печатать их все)?
Prototype имеет много замечательных функций, включая Class помощник, который обрабатывает детали "наследования" JS через прототип объекта.
Edit: Черт, я все время забываю, что jQuery (моя собственная библиотека выбора) имеет jQuery.extend
Не работает ли он на Yahoo? Вы всегда можете использовать библиотеки пользовательского интерфейса Yahoo.
Лично я не согласен с JQuery, так как это выглядит мне более кратким, но вы знаете: лошади для курсов.
Dojo внимательно следил за идеями Крокфорда. Например, существует реализация фрагмента кода, который вы выполнили выше, в функции dojo.delegate
(в еще более быстрой форме).
Я не думаю, что существует конкретный проект, который следует его рекомендациям тройнику. Большинство наборов инструментов фактически не согласуются с некоторыми его рекомендациями и шаблонами. Если вам интересно узнать о конкретных функциях, например, этом фрагменте кода выше, стоит спросить, какие конкретные инструменты из книги вы хотите использовать в своих проектах.
Я думаю, что YUI ближе всего к тому, чему учит Крокфорд в своей книге. (Он архитектор Yahoo также и имеет смысл)
Посмотрите es5-shim, библиотеку, которая обеспечивает хотя бы неполную прокладку для Object.create()
и другие вещи.