2017-04-27 1 views
6

Ich versuche, einen Mini-jQuery-Klon zu erstellen, der Methodenverkettung unterstützen kann. Bisher habe ich kam mit diesem Stück Code oben:jQuery-Objekt Datenstruktur

var $ = (function() { 

    var elements = []; 

    function methodOne() { 
    console.log('Method 1'); 
    return this; 
    } 

    function methodTwo() { 
    console.log('Method 2'); 
    return this; 
    } 

    return { 
    methodOne: methodOne, 
    methodTwo: methodTwo 
    }; 
}()); 

Auf Seite zu laden, die $ Variable wird mit dem jQuery-Klon-Objekt bevölkert durch die IIFE zurückgegeben.

Meine Frage ist, wie kann ich das $ Objekt als Funktion direkt aufgerufen werden, während die Methode Verkettung Funktionalität beibehalten?

Jetzt kann ich $.methodOne().methodTwo() verwenden, aber ich kann $('some parameter').methodOne().methodTwo() nicht verwenden, genau wie jQuery.

+0

Ich habe nicht versucht, aber ich denke, Sie könnten die 'Klasse' Javascript verwenden und' erweitert' Jquery! Ich denke, das wird es tun. Weißt du, ich bin neugierig und ich werde es auch versuchen. – funcoding

Antwort

3

var $ = function (param) { 
 

 
    var elements = []; 
 
    console.log(param); 
 

 
    function methodOne() { 
 
    console.log('Method 1'); 
 
    return this; 
 
    } 
 

 
    function methodTwo() { 
 
    console.log('Method 2'); 
 
    return this; 
 
    } 
 

 
    return { 
 
    methodOne: methodOne, 
 
    methodTwo: methodTwo 
 
    }; 
 
}; 
 

 
$('This is a param').methodOne().methodTwo();

1

Working fiddle. Die Kommentare sollten mehr oder weniger selbsterklärend sein.

Es könnte ein bisschen lang aussehen, aber Sie können jedes Mal, wenn Sie es aufrufen, ein neues Mini-jQuery-Objekt erstellen.