Я пытаюсь получить принципы выполнения функции jQuery-стиля в моей голове. Под этим я имею в виду:Как работает привязка основных объектов/функций в javascript?
var e = f1('test').f2().f3();
У меня есть один пример для работы, а другой нет. Я отправлю их ниже. Я всегда хочу изучить первые принципиальные основы того, как что-то работает, чтобы я мог строить поверх него. До сих пор у меня было только поверхностное и свободное понимание того, как работает цепочка, и я сталкиваюсь с ошибками, которые я не могу устранить.
То, что я знаю:
- функции должны возвращать себя, иначе "это вернуть;"
- Цепные функции должны находиться в родительской функции, так же как в jQuery, .css() является подходом метода jQuery(), поэтому jQuery(). Css();
- Родительская функция должна либо возвращать себя, либо сам новый экземпляр.
Этот пример работал:
var one = function(num){
this.oldnum = num;
this.add = function(){
this.oldnum++;
return this;
}
if(this instanceof one){
return this.one;
}else{
return new one(num);
}
}
var test = one(1).add().add();
Но это один не делает:
var gmap = function(){
this.add = function(){
alert('add');
return this;
}
if(this instanceof gmap) {
return this.gmap;
} else{
return new gmap();
}
}
var test = gmap.add();
Функции не возвращаются, они возвращают объект, который поддерживает методы, которые вы связываете. В случае jQuery используется узел. – drudru
У каждой функции заканчивается 'return this;'. –
@MarcB - Я знаю, но как? –