Vor ein paar Wochen habe ich einen Weibo -Beitrag gepostet, in dem ich sagte, dass ich Funktionen mag, die Funktionen zurückgeben. Ein paar Antworten erschienen bald, im Grunde genommen alle ... was? ! Für einen Programmierer ist es eine sehr wichtige Fähigkeit, die Funktion zu verstehen, die eine Funktion zurückgibt. Mit der Verwendung können Sie viel Code sparen, JavaScript effizienter gestalten und die Leistung von JavaScript weiter verstehen. Im Folgenden finden Sie einige einfache Beispiele, die ich geschrieben habe, mit denen Sie verstehen können, was ich meine.
Angenommen, Sie haben ein Objekt, das zwei Kinderobjekte enthält, und alle haben eine GET -Methode. Diese beiden Methoden sind sehr ähnlich und leicht unterschiedlich:
var Accessors = {sortierbar: {get: function () {return typed this.getAttribute ('sortable')! = 'undefined'; }}, dropPable: {get: function () {return typed this.getAttribute ('dropPable')! = 'undefined'; }}};Wiederholter Code ist kein gutes Phänomen, daher müssen wir eine externe Funktion erstellen und einen Eigenschaftsnamen akzeptieren:
Funktion GetAtTribute (attr) {return typed this.getAttribute (attr)! }}, dropPable: {get: function () {return getAtTribute ('dropPable'); }}};Das ist viel besser, aber es ist immer noch nicht perfekt, da es immer noch einige redundante Teile gibt. Ein besserer Weg ist, die Funktion, die Sie am Ende benötigen, direkt zurückzugeben. Dadurch wird die Ausführung der redundanten Funktion beseitigt:
Funktion generateGetMethod (attr) {return function () {return typeof this.getAttribute (attr)! = 'undefined'; };}var accessors = { sortable: { get: generateGetMethod('sortable') }, droppable: { get: generateGetMethod('droppable') }};/* It is completely equivalent to the original method: */var accessors = { sortable: { get: function() { return typeof this.getAttribute('sortable') != 'undefined'; }}, dropPable: {get: function () {return typed this.getAttribute ('dropPable')! = 'undefined'; }}};*/Was Sie oben sehen, ist eine Funktion, die eine Funktion zurückgibt. Jedes untergeordnete Objekt hat eine eigene Methode, aber der verschachtelte Ausführungsprozess für unnötige Funktionen wird entfernt.
Dies ist eine sehr nützliche Technik, mit der Sie die Duplikation ähnlicher Code beseitigen können. Wenn Sie ordnungsgemäß verwendet werden, kann Ihr Code lesbarer und leichter zu pflegen!
Verstehst du?