Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Функция-селектор наподобие jQuery (https://javascript.ru/forum/misc/30093-funkciya-selektor-napodobie-jquery.html)

Dim@ 24.07.2012 12:40

devote,
хм, для кого мусор для кого нет, некоторые библиотеки не принебрегают расширением прототипов, ну а я так написал:write:

Dim@ 24.07.2012 12:41

devote,
кстати почему все всех пинают за расширение прототипов?

shoo 24.07.2012 12:44

Dim@,
Троллишь? Хотя, это самое простое и понятное решение, за исключением момента с (/\w?\ HTML\w?/img.test(prot) == true).

devote,
Не могли бы выставить комментарии? Не могу понять, каким образом работает код.

Dim@ 24.07.2012 12:49

shoo,
Цитата:

Сообщение от shoo
Не могли бы выставить комментарии? Не могу понять, каким образом работает код.

:blink: 'элементарный код не понимаете?
function selectElement(element) { //функция принимающая элемент
    this.hide = function () {//у него создается функция hide
        element.style.display = 'none';//которая изменяет style.display
    }
}

Dim@ 24.07.2012 12:51

<div id="errorBar" onclick="(new selectElement(this)).hide()">123</div>

(new selectElement(this)) - создание нового selectElement принимающего данный элемент
.hide() - скрытие

shoo 24.07.2012 13:10

Цитата:

Сообщение от devote (Сообщение 191154)
<div id="errorBar" onclick="selectElement(this).hide()">123</div>
<script>
function selectElement( elem ) {
    return new selectElement.prototype.init( elem );
}
selectElement.prototype = {
    constructor: selectElement,
    length: 0,
    init: function( elem ) {
        this[0] = elem;
        this.length = 1;
        return this;
    },
    hide: function() {
        var elem, i = this.length;
        for( ;elem = this[ --i ]; ) {
             elem.style.display = 'none';
        }
        return this;
    }
}
selectElement.prototype.init.prototype = selectElement.prototype;
</script>

Dim@, Нет, я вот про это.

devote 24.07.2012 13:14

Цитата:

Сообщение от Dim@
некоторые библиотеки не принебрегают расширением прототипов

про некоторые ты наверно имел ввиду prototype.js ?? Только она этим и занимается, других не встречал.

Цитата:

Сообщение от Dim@
кстати почему все всех пинают за расширение прототипов?

очень просто, я делаю у себя в скрипте перебор элементов и натыкаюсь на лишний метод, что не есть гуд.. Или возьми джуквери, у него есть метод, под названием isEmptyObject вот и подумай теперь, скажет она что он пустой или все же нет.
работает она по простому принципу:
function isEmptyObject( obj ) {
	for ( var name in obj ) {
		return false;
	}
	return true;
}
alert( isEmptyObject({}) ); // true

Object.prototype.test = function() {};
alert( isEmptyObject({}) ); // false
Вот за это и не любят, то что это просто может сломать другой код.

Dim@ 24.07.2012 13:19

devote,
хм,;)
Цитата:

Сообщение от devote
про некоторые ты наверно имел ввиду prototype.js ?? Только она этим и занимается, других не встречал.

вроде ещё motools занимается

devote 24.07.2012 13:21

Цитата:

Сообщение от Dim@
вроде ещё motools занимается

другие библиотеки, могут добавлять прототипы лишь в тех случаях когда их нет в таком то браузере, но они есть в стандартах. Тогда можно добавить/расширить возможности браузера методами которые описаны в стандартах, но не более того.

devote 24.07.2012 13:27

shoo,
с учетом того что вы не понимаете как работают конструкторы, боюсь мои коменты вам вряд ли чем помогут, вам нужно почитать книжку для начала, понять что с чем едят. Там все подробно описано что и как, и даже примеры того что я сделал есть.


Часовой пояс GMT +3, время: 12:18.