2012-04-02 3 views
1

Ich bin dabei, ein paar Skripts in meinem Projekt zu namespacing und nach der Suche nach einer Weile, bin ich mir nicht sicher, ob ich die Best Practices zu Namespacing-Eigenschaften folgen. HierDas beste Muster zum Namespacen einer Eigenschaft mit jQuery

ist ein Beispiel dessen, was ich tun:

var myNamespace = myNamespace || {}; 

    $.extend(true, myNamespace, { 
     subNamespace: { 

     } 
    }); 

    $.extend(true, myNamespace.subNamespace, { 
     data: {} 
    }); 

    $(document).ready(function() { 
     myNamespace.subNamespace.data = "Value as string"; 

     alert(myNamespace.subNamespace.data); 
    }); 

Wie Sie sehen können, der Name der Eigenschaft in diesem Fall ist ‚Daten‘.

Ist das der gute Ansatz, Eigenschaften in Namespace mit Javascript, Jquery zu implementieren?

Danke

Antwort

1

Gibt es einen bestimmten Grund, warum Sie jQuery.extend Tiefe hinzufügen verwenden? Auf den ersten Blick könnte man genauso gut definieren den Namespace ein Objekt Singleton mit:

var myNamespace = { 
    subNamespace: { 
     data: "Value as string" 
    } 
}; 
+0

Ich benutze die jQuery.extend, weil ich in der Lage sein möchte, die Eigenschaften und Funktionen des SubNamespace in verschiedenen Schritten zu konstruieren. Mit Ihrer Lösung müssen Sie alle SubNamespaces definieren, die am gleichen Ort enthalten sein können. Mit meiner Lösung, wenn ich einige Funktionen und Eigenschaften an einer Stelle und andere zu demselben Namespace an einer anderen Stelle hinzufügen, überschreibe ich nicht die SubNamespace-Definition in meinen vorherigen Schritten. Es ist möglich, dass ich falsch liege ?! – Samuel

+0

Sie brauchen 'jQuery.extend' nicht, um das zu tun:' var top = {}; top_ = {}; top_data = 'was auch immer'; ' – David

1

Addy Osmani ist ein großer Schriftsteller von Javascript-Design Best Practices mit mehreren kostenlosen E-Bücher und unzählige Blog-Beiträge zu Themen wie Namespacing hat.

Er war früher ein JS-Ingenieur für AOL, hat aber kürzlich angekündigt, dass er zu Google wechselt.

Hier ist ein Link speziell zum Namespacing-Kapitel in einem seiner Bücher, aber ich schlage vor, dass Sie auch seine Hauptseite lesen.

http://addyosmani.com/resources/essentialjsdesignpatterns/book/#detailnamespacing

+0

Vielen Dank für diese Informationen. Wenn ich in Google "Javascript Namespacing" eingegeben habe, ist das erste Element im Ergebnis immer der Link, den Sie aufgerufen haben. Dies ist meine Referenz Ich möchte immer noch den Rat anderer über den Subjet. – Samuel

0

Wenn Sie extend() verwenden, da die NameSpace Objekt bereits vorhanden ist, dann tief in vollen Zügen verlängern verwenden:

$.extend(true, NameSpace, { 
    subNameSpace : { 
     data : {} 
    } 
}); 

Leider die Frage, die Sie ordnungsgemäßer haben, wie Sie Ihr Objekt nennen ist völlig abhängig von dem Projekt. Sind die Daten etwas, was andere Entwickler nicht anfassen sollten? Wenn nicht, dann besteht eine Konvention darin, am Anfang des Namens einen Unterstrich zu verwenden. Wie viele subNameSpace haben Sie und werden data von einem oder allen von ihnen abhängig sein.

Wenn Sie den Namespace vom Objekt jQuery entfernen, müssen Sie bestimmen, ob die Methode für sich oder für eine Gruppe ausgewählter Objekte ausgeführt werden soll. Wenn die erstere dann einfach jQuery ausdehnt, und wenn letztere dann jQuery.fn verlängern.

Verwandte Themen