Вход

Просмотр полной версии : Объектная структура


Moonlight
20.02.2013, 19:20
Всем привет!

Может мне кто подскажет. Мне нужно на js создать структуру как в jQuery.
То есть у меня допустим будет функция и в неё я передам название html-элемента "myFunc('body')". Затем я вызову её метод ну и с этим элементом произойдёт то, что я повешу на него "myFunc('body').move(100)". Метод move как раз будет изменять body.

В общем как написать такую структуру вызова на js?

danik.js
20.02.2013, 20:03
По образу и подобию jQuery, только работает с одним элементом:
(function(){
var myFunc = function(selector){
return new myFunc.prototype.init(selector);
}
myFunc.prototype = {
init: function(selector) {
this.selector = selector;
this.element = document.querySelector(selector);
return this;
},
move: function(x) {
alert ('move ' + this.selector + ' to ' + x);
return this;
}
}
myFunc.prototype.init.prototype = myFunc.prototype;

window.myFunc = myFunc;
})();

myFunc('body').move(100);

megaupload
20.02.2013, 20:59
это называется цепочки вызовов, когда метод возвращает сам обьект return this.

danik.js
20.02.2013, 21:03
megaupload, у него в вопросе ни слова про цепочки, только упоминание jQuery. Ему как я понял главное получать из селектора объект, у которого есть различные методы работы с этим объектом.

megaupload
20.02.2013, 21:05
у него в вопросе ни слова про цепочки, только упоминание jQuery.
как написать такую структуру вызова

да ты шерлок

danik.js
20.02.2013, 21:06
megaupload, да ты олень )
Процитируй лучше где он упомянул цепочку.

megaupload
20.02.2013, 21:45
да ты олень )
Зачем ты мне нагрубил? В баню захотел?

danik.js
20.02.2013, 21:51
К сожалению у меня плоховато развита фантазия. Извини что не подобрал более подходящего слова для тебя, ок?

megaupload
20.02.2013, 21:54
И тем не менее ты нагрубил. В баню захотел?

Moonlight
20.02.2013, 22:44
danik.js отлично, это и нужно, спасибо)

Moonlight
20.02.2013, 22:51
А что означает такая конструкция (function(){ /*тут код*/ })(); ?

Зачем "function(){}" взята в скобки и зачем после неё стоят ещё 2 скобки ()?

Или где можно почитать про этот синтаксис?

Deff
20.02.2013, 22:59
aвтовызов поди
(function(){
alert("A");
})()

danik.js
20.02.2013, 22:59
Мы создаем анонимную функцию и тут же ее вызываем. Скобки в конце - как раз чтобы ее вызвать, как и в случаях с любой другой функцией.

http://learn.javascript.ru/function-declaration-expression#функция-с-вызовом-на-месте

Moonlight
20.02.2013, 23:07
Ох спасибо), ушёл читать.