Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.06.2017, 11:19   #1
Feeddie
Пользователь
 
Регистрация: 11.04.2017
Сообщений: 28
По умолчанию Создание методов и свойств для функции

Привет. Изучил я тут javascript, решил попрактиковаться и мне стало интересно как работает та же библиотека javascript. Ясное дело, что в том мясе кода, которое просто неизбежно ест мой мозг, я ничего не понял. Решил по своей логике написать простенькую программку для того, чтобы обращаться по сокращенному пути к любому DOM-объекту и именно обращаться у меня получилось, но вот дальше...

Не смотря на то, что я учил замыкания, ООП, я нигде не обнаружил одного. Как же, черт побери, задать свойство функции, у которой есть параметры и которая вызывается ни как объект, а как функция? Это происходит при вызове, к примеру, $(obj).css(attr, val) и все работает, вот только я испробовал несколько способов, перечисляю.

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

Вот примеры того, что я писал:

Код:
<script type="text/javascript">
	var $ = function (e, atr) {
		var element = e.trim();
		if(typeof element === "string" && element !== ""){
			if(element.charAt(0) === "#") {
				return document.getElementById(element.substr(1));
			}else if(element.charAt(0) === ".") {
				if(typeof atr === "number"){
					return document.getElementsByClassName(element.slice(1))[atr]
				}
			}else{
				if(typeof atr === "number"){
					return document.getElementsByTagName(element)[atr]
				}
			}
		}
		
                return {
                    css: function (attr, val) {
                       return this.style.attr = val;
                    }
                }
		
	}
$(".p").css("color", "red"); // Не работает
</script>
В этом коде моей ошибкой еще является то, что я не знаю как превратить строку в объект. Возможно ли такое, чтобы "style" вдруг стал style?

Следующий мой вариант:

Код:
<script type="text/javascript">
	var $ = function (e, atr) {
		var element = e.trim();
		if(typeof element === "string" && element !== ""){
			if(element.charAt(0) === "#") {
				return document.getElementById(element.substr(1));
			}else if(element.charAt(0) === ".") {
				if(typeof atr === "number"){
					return document.getElementsByClassName(element.slice(1))[atr]
				}
			}else{
				if(typeof atr === "number"){
					return document.getElementsByTagName(element)[atr]
				}
			}
		}
		
                var css = function (attr, val) {
                   return this.style.attr = val;
                }
		
	}
$(".p").css("color", "red"); // Не работает
</script>
Прошу помощи знатоков. Я вижу, что я делаю это неправильно. Как мне сделать это грамотно?

Я знаю как это сделать через prototype, но не понимаю, как же без манипуляций типа var obj = new Obj(); все это работает в jQuery

Последний раз редактировалось Feeddie; 30.06.2017 в 11:21.
Feeddie вне форума Ответить с цитированием
Старый 30.06.2017, 13:31   #2
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

У jQuery открытый исходный код
Код:
jQuery = function( selector, context ) {

        // The jQuery object is actually just the init constructor 'enhanced'
        // Need init if jQuery is called (just allow error to be thrown if not included)
        return new jQuery.fn.init( selector, context );
    }
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 30.06.2017, 13:47   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Naive Посмотреть сообщение
У jQuery открытый исходный код
точно.

а что касается css, то там так:
Код:
jQuery.fn.extend({
        css: function( name, value ) {
                return jQuery.access( this, function( elem, name, value ) {
                        var len, styles,
                                map = {},
                                i = 0;

                        if ( jQuery.isArray( name ) ) {
                                styles = getStyles( elem );
                                len = name.length;

                                for ( ; i < len; i++ ) {
                                        map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
                                }

                                return map;
                        }

                        return value !== undefined ?
                                jQuery.style( elem, name, value ) :
                                jQuery.css( elem, name );
                }, name, value, arguments.length > 1 );
        },
        show: function() {
                return showHide( this, true );
        },
        hide: function() {
                return showHide( this );
        },
        toggle: function( state ) {
.......
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перебор имен всех доступных свойств и методов объект в VBA ivan1h42 Microsoft Office Excel 4 10.11.2021 20:11
Объявление и определение методов.Напишите функции в виде методов (подпрограмм). Напишите тестирующую программу с выдачей результа Vika_0_0 C# (си шарп) 0 04.10.2012 15:21
Где найти литературу по описанию свойств, методов и событий компонентов Visual Studio LISTAT C# (си шарп) 1 11.02.2012 17:52
Cкрипт с использованием объекта layer, его свойств и методов Zempery JavaScript, Ajax 0 05.04.2010 12:09
Cкрипт с использованием объекта layer, его свойств и методов Zempery Помощь студентам 0 05.04.2010 11:41