Come sembra, questo sostituisce l'oggetto funzione con la nuova istanza
No, non sostituisce nulla. Il nome di un'espressione di funzione (è quello che hai) è accessibile solo all'interno della funzione stessa, non al di fuori di esso. Sarebbe esattamente lo stesso come se si omette il nome:
var myFunc = new function(){};
In generale, se non si vuole certi simboli accessibili, solo che non li rendono globale. Definire quei simboli all'interno di una funzione e proprio ritorno ciò che si desidera rendere accessibile, ad esempio:
var myobj = (function() {
function Foo() {};
// do whatever
return new Foo();
}());
Tuttavia, se si desidera solo per creare un singolo oggetto, spesso è più facile da usare di un letterale oggetto:
var myobj = {};
non v'è alcun motivo per usare una funzione di costruzione se desideri solo per creare una singola istanza da essa.Se vuoi stabilire l'ereditarietà, puoi usare Object.create
[MDN]
fonte
2013-04-16 18:09:12
@PeeHaa 埽 Se non sei un ragazzo di JS, non importa se ti sembra tanto strano ... Se sembrava strano per uno sviluppatore JS , quindi mi interessa di più –
In realtà lo fa. Perché sono qui per imparare ... – PeeHaa
@PeeHaa 埽 Allora questa è una lezione? –