Объектно-ориентированный Javascript или Pure jQuery и .data хранилище - PullRequest
4 голосов
/ 22 октября 2010

Мой текущий стиль программирования - OO javascript с использованием функции Class.extend Джона Резига: http://ejohn.org/blog/simple-javascript-inheritance/

Это было хорошо, но я пишу многочисленные методы установки и получения, которые используются только в init.Кроме того, кажется, что это приводит к утечкам памяти в IE при сохранении экземпляров этих объектов в массиве для последующего использования.

Я начинаю отдавать предпочтение меньшему, более чистому и более читаемому коду по сравнению с кажущимся излишним ОО-подходом.Моя идея состоит в том, чтобы теперь просто основывать все на dom, используя jquery, и хранить свойства данных с помощью метода .data.Например, вместо создания экземпляра нового объекта Tweet, вы просто добавили бы div в dom с помощью твита класса и просто добавили свойства, такие как author, timestamp, reply to, от кого и т. Д., В кеш .data дляэтот элемент dom.

Что вы думаете об этом менее структурированном подходе при создании экземпляров таких вещей, как элементы в потоке, таких как твиттер?Является ли ОО и наследование прототипов лучшим подходом или лучше строгая манипуляция с домом?

Ответы [ 2 ]

1 голос
/ 22 октября 2010

Я делаю что-то подобное.Я принял подход JavaScript OO.Но вместо использования массивов я использую объект значения ключа.Ключ - это уникальный идентификатор элемента dom, значение - это сам объект.это выглядит примерно так.

например:

var collection = {};
var $domEl = jQuery;              // jquery dom element
var myClass= new MyClass($domEl); // class instance

// add to collection
collection[$domEl.attr('id')] = myClass;

// remove
delete collection[$domEl.attr('id')];

На самом деле это зависит от сложности ваших объектов.Строго .data подход должен опираться на плагины для всех связанных методов, а затем хранить данные в элементах данных.У меня есть много методов, которые не связаны строго со взаимодействием элементов, поэтому я храню методы и данные в классе.

1 голос
/ 22 октября 2010

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

Однако я только что написал веб-приложение HTML5, которое работает в автономном режиме, используя встроенный SQLlite, и делал это, используя в основном .data, сохраняя информацию в div и получая их оттуда. Это было просто, чисто и легко, но по какой-то причине не чувствовало себя хорошо.

Но это сработало хорошо.

...