JavaScript中判断函数是new还是()调用的区别说明_javascript技巧
方式1
function Person(n,a){
this.name = n;
this.age = a;
if(this instanceof Person){
alert('new调用');
}else{
alert('函数调用');
}
}
var p = new Person('jack',30); // --> new调用
Person(); // --> 函数调用
方式2
function Person(n,a){
this.name = n;
this.age = a;
if(this instanceof arguments.callee){
alert('new调用');
}else{
alert('函数调用');
}
}
var p = new Person('jack',30); // --> new调用
Person(); // --> 函数调用
方式3
function Person(n,a){
this.name = n;
this.age = a;
if(this.constructor === arguments.callee){
alert('new调用');
}else{
alert('函数调用');
}
}
var p = new Person('jack',30); // --> new调用
Person(); // --> 函数调用
看似很完美,但当把函数/类作为自身实例对象的方法时调用就出问题了
function Person(n,a){
this.name = n;
this.age = a;
if(this.constructor === arguments.callee){
alert('new调用');
}else{
alert('函数调用');
}
}
var p = new Person('jack',30); // 先new一个对象
p.fn = Person; // 把函数/类 Person 赋值给自身对象p的fn属性
p.fn(); // 这句调用时提示“这是new调用”,显然不对
还有更好的方法吗?

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Unterschiede: 1. Make kann nur zum Zuweisen und Initialisieren von Daten der Typen Slice, Map und Chan verwendet werden, während new jeden Datentyp zuordnen kann. 2. Die neue Zuweisung gibt einen Zeiger vom Typ „*Type“ zurück, während make eine Referenz vom Typ „Type“ zurückgibt. 3. Der von new zugewiesene Speicherplatz wird gelöscht. Nachdem make den Speicherplatz zugewiesen hat, wird er initialisiert.

1. Konzept In der Java-Sprache ist der „neue“ Ausdruck für die Erstellung einer Instanz verantwortlich. Der Konstruktor wird aufgerufen, um die Instanz zu initialisieren „Objektreferenz“, aber der Wert des neuen Ausdrucks ist eine Referenz auf das neu erstellte Objekt. 2. Zweck: Erstellen Sie ein Objekt einer neuen Klasse. 3. Arbeitsmechanismus: Allokieren Sie Speicherplatz für Objektmitglieder und geben Sie Standardwerte explizit an, führen Sie Konstruktionsmethodenberechnungen durch und geben Sie häufig Referenzwerte zurück bedeutet, neue im Speicher zu öffnen. Der Speicherplatz wird im Heap-Bereich im Speicher zugewiesen. Er wird von JVM gesteuert und verwaltet den Speicher. Hier verwenden wir die String-Klasse als Beispiel. Pu


Excel-Tabellen gibt es in allen Lebensbereichen, egal ob Sie am Arbeitsplatz arbeiten, Lehrer sind oder sogar Mitarbeiter einer staatlichen Behörde sind. Die Beherrschung von Excel-Bedienungskenntnissen kann Ihrer Arbeit Glanz verleihen und Ihnen dabei helfen notwendig, befördert zu werden. Der Herausgeber dieses Artikels teilt Ihnen hauptsächlich häufig verwendete Excel-Beurteilungsfunktionen mit. 1. Häufig verwendete Excel-Beurteilungsfunktionen 1. IF-Funktion: Gibt unterschiedliche Werte gemäß der bedingten Beurteilung zurück =IF (bedingte Beurteilung, das Ergebnis ist ein wahrer Rückgabewert, das Ergebnis ist ein falscher Rückgabewert) 2. ODER Funktion: Mehrere logische Bedingungen ausführen. Urteil; Syntax = ODER (Bedingung 1 = Kriterium 1, Bedingung 2 = Kriterium 2, ... Bedingung N = Kriterium N) 3. UND-Funktion: Mehrere Bedingungen werden gleichzeitig festgelegt;

Wie funktioniert der neue Operator in js? Es werden spezifische Codebeispiele benötigt. Der neue Operator in js ist ein Schlüsselwort, das zum Erstellen von Objekten verwendet wird. Seine Funktion besteht darin, ein neues Instanzobjekt basierend auf dem angegebenen Konstruktor zu erstellen und einen Verweis auf das Objekt zurückzugeben. Bei Verwendung des neuen Operators werden tatsächlich die folgenden Schritte ausgeführt: Erstellen eines neuen leeren Objekts; Verweisen des Prototyps des leeren Objekts auf das Prototypobjekt des Konstruktors; Zuweisen des Gültigkeitsbereichs des Konstruktors auf das neue Objekt Objekt); Führen Sie den Code im Konstruktor aus und geben Sie das neue Objekt an

Fujifilm war in den letzten Jahren sehr erfolgreich, vor allem aufgrund seiner Filmsimulationen und der Beliebtheit seiner kompakten Kameras im Rangefinger-Stil in den sozialen Medien. Laut Fujirumors scheint sich das Unternehmen jedoch nicht auf seinen Lorbeeren auszuruhen. Die u

Verwenden von clone() anstelle von new Die häufigste Methode zum Erstellen einer neuen Objektinstanz in Java ist die Verwendung des Schlüsselworts new. Die Unterstützung von new durch JDK ist sehr gut. Die Verwendung des Schlüsselworts new zum Erstellen leichter Objekte ist sehr schnell. Bei schweren Objekten kann die Ausführungszeit des Konstruktors jedoch länger sein, da das Objekt möglicherweise einige komplexe und zeitaufwändige Vorgänge im Konstruktor ausführt. Dadurch kann das System kurzfristig keine große Anzahl an Instanzen erhalten. Um dieses Problem zu lösen, können Sie die Methode Object.clone() verwenden. Die Methode Object.clone() kann den Konstruktor umgehen und eine Objektinstanz schnell kopieren. Standardmäßig ist die von der clone()-Methode generierte Instanz jedoch nur eine flache Kopie des Originalobjekts.

1. Das Konzept ist „ein Java-Objekt erstellen“ ----- Speicher zuweisen und einen Verweis auf diesen Speicher zurückgeben. 2. Hinweise (1) Das Java-Schlüsselwort new ist ein Operator. Er hat die gleiche oder eine ähnliche Priorität wie +, -, *, / und andere Operatoren. (2) Das Erstellen eines Java-Objekts erfordert drei Schritte: Deklarieren von Referenzvariablen, Instanziieren und Initialisieren der Objektinstanz. (3) Vor der Instanziierung wird standardmäßig der parameterlose Konstruktor der übergeordneten Klasse aufgerufen, dh es muss ein Objekt der übergeordneten Klasse erstellt werden. 3. Zwei Instanziierungsmethoden (1) Objektname = neuer Klassenname (Parameter 1, Parameter 2... Parameter n); Objektname (); (2) neuer Klassenname (Parameter 1, Parameter 4). Objekt real
