Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Последовательность функций как в jquery (https://javascript.ru/forum/events/30898-posledovatelnost-funkcijj-kak-v-jquery.html)

platedz 19.08.2012 21:35

Последовательность функций как в jquery
 
Скажите, пожалуйста, как можно реализовать последовательность функций по типу как это реализовано в джиквери. т.е.

el.func1().func2().func3();

Может быть есть где-то информация по данному поводу. Полдня искал, так и не нашел. Хотя может что-то не то искал.

Буду крайне признателен за любую информацию.

Deff 19.08.2012 21:37

platedz,
Для начала нужен код этих самых функций, судя по записи - это методы

http://javascript.ru/tutorial/object...avlenie-metoda

vadim5june 19.08.2012 21:40

они все возвращают this который в свою очередь указывает на вызывающий объект
поэтому после выполнения каждой функции мы получаем тот же объект только модернизирванный
добавляй в конце return this
вот здесь в самом низу пример есть
http://sartas.ru/js-cepochka-funkcij-kak-v-jquery/

cyber 19.08.2012 21:54

вызов функций или методов?
методов
var object_ = {

 first: function () {

 alert('первый');
 return this;
},

 second: function () {

 alert('второй');
 return this;
}

}
object_.first().second();


функций
function _object() {

var self = arguments.callee;

self.first = function () {
alert('первый');

return self;
}

self.second = function () {

alert('второй');
return self;
}

return self;
}
_object().first().second();

platedz 19.08.2012 22:09

Спасибо. Буду разбираться и пробовать.

platedz 19.08.2012 23:04

Последовательность сама по себе вышла, но если соответствовать методу jquery, то мы должны первым объявить элемент, а потом уже назначать ему методы.
Я написал так
tel = function(window){

return {

elemmm : function(e){ return document.getElementById(e); },

 first: function (w) {

 alert(w);
 return this;
},

 second: function (w) {

 alert(w);
 return this;
}

}

}(window);

tel.first(tel.elemmm("apslaed"));


Но это не правильно, тк. должно быть примерно так или навроде того
tel.elemmm("apslaed").first();

Deff 19.08.2012 23:06

platedz,
Вы просто присвойте потом tel =$("apslaed")

cyber 19.08.2012 23:11

мой совет, лучше делайте так

function test () {
var self = this;

this.first = function () {

alert('one');
return self;
}

this.second = function () {

alert('two');
return self;
}
}

var obj = new test();

obj.first().second();

bot87 19.08.2012 23:20

cyber отличные примеры спс :)

platedz 19.08.2012 23:46

Честно говоря не понимаю, как реализовать. Можно какой-нибудь пример с присвоением элемента и затем последовательного выполнения пары функций.
Т.е. Скажем мы берем элемент и последовательно выводим его к примеру в двух алертах, или что-то подобное.
document.getElementById("id").alert1().alert2();


соответственно alert1 должен вывести alert1(document.getElementById("id").innerHTML) из функции
function alert1(e){alert(e.innerHTML);}

соответственно alert2 должен вывести alert(document.getElementById("id").id)
function alert2(e){alert(e.id);}

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


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