2011-06-25 10 views
13

Istnieje stara sztuczka (that I learned on SO) polegająca na wychwytywaniu wywołania konstruktora jako funkcji, tj. Zapominaniu słowa kluczowego new. Następujące, lub coś w tym stylu, są umieszczane w każdym konstruktorze u góry.Metody alternatywne dla tej instancji arguments.callee

if (!(this instanceof arguments.callee)) { 
    throw Error("Constructor called as a function"); 
} 

Jakie są alternatywy, kiedy trzeba "use strict";?

Czy można zachować charakter ogólny? Czy musimy użyć nazwy konstruktora zamiast nazwy arguments.callee?

Odpowiedz

5

arguments.callee samo w sobie jest przestarzałe na rzecz nazwanych wyrażeń funkcji. Chociaż niekoniecznie zgadzam się z tym posunięciem, to w jaki sposób postępuje. W związku z tym zastąpienie arguments.callee nazwą funkcji jest jedynym sposobem w trybie ścisłym, a także jest preferowaną metodą w trybie nie ścisłym.

Powiązane problemy