2016-05-26 20 views
-1

Ich habe eine Frage.Warum Mozilla Object.assign Polyfill in eine anonyme Funktion setzen?

In der Polyfill Abschnitt von MDN page for Object.assign Funktion.

Die technischen Redakteure in Mozilla legte eine polyfill von Object.assign in einer anonymen Funktion:

if (typeof Object.assign != 'function') { 
    (function() { 
    Object.assign = function (target) { 
     ... 
    }; 
    })(); // <-- anonymous function call 
} 

Was anders ist, wenn wir nur Object.assign = function (target) { direkt im if hier ohne die anonyme Funktion Erklärung setzen?

Warum sollten sie das tun?

+1

MDN ist wie ein [offenes Wiki] (https://developer.mozilla.org/en-US/docs/MDN/About), [dies] (https://developer.mozilla.org/en-US)/docs/Web/JavaScript/Referenz/Global_Objects/Object/assign $ compare? to = 976783 & from = 975633) ist das diff für diese Änderung, da die anonyme Funktion nichts anderes als die Zuweisung tut, denke ich, dass Sie es sicher loswerden können –

+0

Ich bin nur neugierig, warum sie es tun würden: Ich möchte wissen, ob es eine neue Gewohnheit von JS-Entwicklern ist, die alles in eine anonyme Funktion stellen wollten, nur um es eigenständiger zu machen oder nicht: D –

+2

Nun, das war das Muster, das Entwickler verwendeten, um den globalen Ausführungskontext nicht zu verschmutzen, aber jetzt können wir Code in ihren eigenen Dateien isolieren und benötigen sie nur wann immer wir wollen, Bündler machen den größten Teil der Arbeit jetzt –

Antwort

0

Die technischen Redakteure in

Mozilla

Nicht alle Redakteure von MDN sind technische Redakteure, es ein offenes Wiki ist.

Warum sollten sie Object.assign polyfill in eine anonyme Funktion setzen?

Es gibt absolut keinen Grund hier. Es könnte nützlich gewesen sein, statische Werte zu speichern, wie zum Beispiel einen Verweis auf Object.prototype.hasOwnProperty, aber das wurde nicht getan, so dass das IIFE überflüssig war. I've removed it.