Heim > Web-Frontend > js-Tutorial > Was passiert, wenn ein JavaScript-Konstruktor einen Nicht-Objektwert zurückgibt?

Was passiert, wenn ein JavaScript-Konstruktor einen Nicht-Objektwert zurückgibt?

Patricia Arquette
Freigeben: 2024-11-13 10:16:02
Original
267 Leute haben es durchsucht

What Happens When a JavaScript Constructor Returns a Non-Object Value?

Understanding Constructor Return Values in JavaScript

In JavaScript, constructors are invoked using the new keyword to create new objects. While the constructor typically returns this, certain conditions can result in different values being returned.

Circumstances for Returning Non-This Values

The behavior is defined by the internal [[Construct]] property used by the new operator. According to the ECMA-262 3rd Edition Specification:

Step 7: If the type of the value returned from the constructor function (Result(6)) is not an Object, return Result(6).
Step 8: Otherwise, return Result(1) (the new object).

Example:

Consider the following constructor:

function Foo() {
  return 1;
}
Nach dem Login kopieren

When invoked with new, the following steps occur:

  • A new object is created, and Foo's prototype is set as its prototype.
  • Foo.call(newObj, args) is invoked (in this case, there are no arguments).
  • Foo returns 1.
  • Since 1 is not an Object, step 7 is executed, and 1 is returned from the constructor.

Thus, (new Foo() instanceof Foo) === false because Foo returned a number, not an object.

Conclusion:

When a constructor returns a non-object value (e.g., a primitive, null, undefined), this is not returned and the constructor function's returned value is returned instead.

Das obige ist der detaillierte Inhalt vonWas passiert, wenn ein JavaScript-Konstruktor einen Nicht-Objektwert zurückgibt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage