jquery链接如何工作?

isJ*_*tMe 55 javascript jquery frameworks

我不是问链接的合适语法是什么,我知道它可能是这样的:

$('myDiv').removeClass('off').addClass('on');
Run Code Online (Sandbox Code Playgroud)

但是我真的很好奇理解它的内部工作,据我所知,链接是对其他着名框架的优势之一,但是对于像我这样的新手程序员来说,我们有很多抽象,我敢肯定有人出来在那里可以为我提供一个解释,让我了解链是如何工作的.

谢谢!

use*_*716 64

如果您有一个具有某些方法的对象,如果每个方法都返回一个带方法的对象,您只需从返回的对象中调用一个方法即可.

var obj = {   // every method returns obj---------v
    first: function() { alert('first');   return obj; },
    second: function() { alert('second'); return obj; },
    third: function() { alert('third');   return obj; }
}

obj.first().second().third();
Run Code Online (Sandbox Code Playgroud)

演示: http ://jsfiddle.net/5kkCh/

  • 我喜欢这个例子,让它更简单..谢谢 (5认同)
  • 而不是'return obj`,你能说'返回这个'吗?因为我测试过,它给了我相同的结果. (4认同)
  • @Derek:你可以这样做,因为示例函数中的`this`将是每个方法被调用的对象. (2认同)

Tej*_*ejs 25

它所做的就是返回this方法完成时的引用.以这个简单的对象为例:

 var sampleObj = function()
 {
 };

 sampleObj.prototype.Foo = function()
 {
     return this;
 };
Run Code Online (Sandbox Code Playgroud)

您可以整天链接这些调用,因为您返回对以下内容的引用this:

var obj = new sampleObj();
obj.Foo().Foo().Foo().Foo() // and so on
Run Code Online (Sandbox Code Playgroud)

jQuery只是执行一个操作,然后返回this.


Dan*_*ite 6

基本上第一个函数调用$('myDiv')返回一个jQuery对象,然后每个后续调用返回相同的一个.

严格地说,

var $ = function(selector) {
   return new jQuery(selector);
};

jQuery.prototype.removeClass = function(className) {
   // magic
   return this;
}
Run Code Online (Sandbox Code Playgroud)