Вынужден предложить анти-аунсер ;), хотя хотелось бы видеть большие проекты, использующие его (если такие есть). Я сам люблю Object.create и предпочитаю его, хотя я никогда не мог широко использовать его в большом проекте и не чувствую, что это должно быть так.
ОО-разработчики пристрастились к оператору 'new', от этой привычки трудно избавиться, и ее легко понять с первого взгляда. Код, написанный классическим способом, сейчас легче передать следующему разработчику, что уже является сильным аргументом против Object.create.
Object.create в ES5 (следующая версия JS) будет намного мощнее и кардинально отличается от Object.create как shim в ES3 (текущая версия JS). По этой причине лучше избегать Object.create (в том виде, в котором он доступен сейчас) в качестве широко используемой стратегии в больших проектах, так как когда ES5 станет мейнстримом, он будет работать иначе, чем сейчас.
Большие проекты используют фреймворки (когда у вас нет нелегальных JS "ниндзя", которые настаивают на написании всего с нуля, изобретая колесо снова и снова), и все популярные фреймворки продвигают прототипическое наследование классическим способом. Они могут иметь метод Object.create где-то в виде .clone() или чего-то еще, но он скрыт в учебниках и документации по наследованию объектов и созданию подклассов.
Приватные свойства невозможны с Object.create в ES3. Чем больше я возился с Object.create, тем больше проблем возникало, и как же я с ним возился...
Я много возился с Object.create и даже написал крошечный фреймворк на его основе под названием 'Objection' (если интересно, вы его найдете ;), хотя воздерживаюсь от ссылки на github) и 'JSoo' (прекращена). Это просто слишком необычно, незаконченно и прогрессивно, чтобы стать мейнстримом и поддерживаться с точки зрения человеческих ресурсов для больших проектов. Я не рекомендую его, хотя и поддерживаю.
попробуйте: http: / /showroom.auction123.com/auction123/index.html
Мы вообще не используем new ... Мы просто устанавливаем результат функции и используем его как класс.
Например:
// CLASS DECLARATION
var ClassName = function() {
var public;
var private;
var publicFunction = function() {
// DO STUFF
};
// RETURN OBJECT
return {
public: public,
publicFunction: publicFunction
};
};
Окончательный результат просто сообщает, что будет опубликовано.
Создайте экземпляр, выполнив:
var object = ClassName();
Его можно найти здесь Подключаемый модуль Nokia WRT для Visual Studio , надстройка для разработчика виджетов nokia.
Из форума nokia:
The Nokia WRT Plug-in for Visual Studio provides features that enable
the creation, editing, testing, and deployment of WRT widgets from within
Visual Studio.