2016-12-25 1 views
0
var jQuery = function(selector) { 
    return new jQuery.fn.init(selector); 
}; 

jQuery.fn = jQuery.prototype = {...}; 

var init = jQuery.fn.init = function(selector){ 
    this.selector = selector; 
    this.element = document.querySelector(this.selector); 
}; 

console.log(
    jQuery('div').selector 
); 

Ich bin derzeit untersuchen, wie jQuery funktioniert, aber ich habe einige Fragenerstellen Bibliothek wie jQuery Stil

  1. jQuery.fn = jQuery.prototype = {}; warum prototype = object, ist nicht in der Regel mit dem Namen Prototyp kommen nach jQuery.prototype.foo = function...

  2. var init = jQuery.fn.init (jQuery.prototoype.init) Wenn ich var init entferne, habe ich einen Fehler, so: var jQuery.fn.init = ...

Antwort

1

1) jQuery.fn = jQuery.prototype = {}; warum Prototyp = Objekt

Eigentlich Prototyp ein Objekt nur, wenn Sie etwas tun, wie,

**jQuery.prototype.get = function(){ 
//Code 
}** 

Sie eine Member-Funktion in Prototyp-Objekt tatsächlich die Erstellung nur mit dem Namen „get“. Sie könnten es so geschehen auch als:

**jQuery.prototype = { 
    "get" : function(){ 
    } 
}** 

2) Wenn Sie init entfernen, wird die Anweisung als var jQuery.fn.init wird = ...

Eigentlich ist dies kein gültiges Anweisung, weil das jQuery-Objekt bereits verfügbar ist. Es ist ein syntaktischer Fehler. Sie können kein Mitglied eines Objekts wie diesem erstellen. jeder übrig gebliebenen von der JavaScript Seite und macht es zu einer völlig neuen „Klasse“ oder Objekt Dafür brauchen Sie nur zu tun, wie

**jQuery.fn.init = function(){ 
}** 
+0

ist jQuery.fn.init = jQuery.prototype.init? bezieht sich das auf jQuery.prototype = {} object? –

1
  1. den Prototyp Einstellung ein leeres Objekt zu sein, löscht . Wenn Sie den var -Teil entfernen, entfernen Sie grundsätzlich die vollständige Definition. Ein Variablenname darf keine Punkte enthalten, da ein Punkt nach Definition ein Objekt erfordert. Daher wird var a.b.c = 1 nicht gültig sein. Sie müssen ein Objekt haben a = { b: {} } und dann tun a.b.c = 1.