![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 19.07.2011
Сообщений: 70
|
![]()
Доброго времени суток!
Пишу свой фреймворк на JS для коммерческой CMS, все бы хорошо но вот с глупой ошибкой столкнулся, точнее даже не с ошибкой, а с не удобностью. Написал свойство некоего объекта аналогичное свойству each() в jQuery, но передавая аргументом функции объект слетает оператор this, а точнее он содержит window: вот код jQuery (эталон)): Код HTML:
<div class="testclass" id="1"></div> <div class="testclass" id="2"></div> <div class="testclass" id="3"></div> Код:
а вот код для моего фреймворка: Код HTML:
<div class="testclass" id="1"></div> <div class="testclass" id="2"></div> <div class="testclass" id="3"></div> Код:
Сам фреймворк скидывать не стал, так как дело в начале объявлений, а вот эти сами объявления: Код HTML:
function Atjs(a) { return new core(a) } var $ = Atjs; function core(a) { this.o = this.find(a); } core.prototype = { find: function(i) { if(typeof i !== 'object') { var s = i[0] var o, val = s === '.' || s === '#' ? i.replace(s,''):i; switch(s) { case '.': o = document.getElementsByClassName(val); break; case '#': o = document.getElementById(val); break; default: o = document.getElementsByTagName(val); break; } } else o=i; return o; }, и т.п. }
Made All in China - MAC OS...
|
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 19.07.2011
Сообщений: 70
|
![]()
Нашел один способ, но это полнейший "костыль" и не решает проблемы:
1. Создал глобальный массив 2. Переписал объект core: Код:
Made All in China - MAC OS...
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 19.07.2011
Сообщений: 70
|
![]()
что то совсем нет участия в посте, может вопрос как то не так поставил?
Made All in China - MAC OS...
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 08.07.2010
Сообщений: 679
|
![]()
Наберите в гугле "ООП javascript" и увидите, почему не пишут - потому что этот самый ООП (вместе с this) на js можно реализовать сотней способов, каждый день придумывают всякие конструкторы, фреймворки и костыли, чтобы изобразить полноценные классы, там где их нет.
Чтобы вам рассказать, на что указывает this в js в разных случаях, мне понадобится написать статью, чего делать не хочется, благо их в интернете куча. Что касается примеров, посмотрите лучше в mootools - там оно лучше выглядит, чем в jquery |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 19.07.2011
Сообщений: 70
|
![]()
Спасибо обязательно посмотрю.
Made All in China - MAC OS...
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вопрос по контенту на jQuery | SweetOpium | JavaScript, Ajax | 3 | 08.12.2011 18:21 |
Вопрос про jQuery. | Arkaim | JavaScript, Ajax | 5 | 10.11.2011 21:54 |
вопрос по библиотеке | JIeka | Общие вопросы C/C++ | 8 | 26.08.2011 18:19 |
В библиотеке | Mika_32 | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 04.04.2010 19:00 |
Вопрос по библиотеке jQuery | Help_me | JavaScript, Ajax | 5 | 04.03.2009 12:57 |