Home > Web Front-end > JS Tutorial > body text

When Can a JavaScript Constructor Return Something Other Than 'this'?

DDD
Release: 2024-11-11 07:11:02
Original
602 people have browsed it

When Can a JavaScript Constructor Return Something Other Than 'this'?

Instances Where Constructors Return Values Other Than 'this'

In JavaScript, when a constructor is invoked using the new keyword, it generally returns the newly created object. However, under specific circumstances, it can return a different value to avoid returning this.

Conditions for Returning Other Values

As outlined in the ECMA-262 3rd Edition Specification's [[Construct]] internal property (step 7), the return value of a constructor (Result(6)) determines if this will be returned or not. If Result(6) is not an Object type, it will be returned instead of this. This condition is critical for the correct execution of the constructor.

Example

Consider the following constructor:

function Foo() {
  return 10; // Returning a non-object primitive
}

var foo = new Foo();
Copy after login

In this example, since 10 is a non-object primitive, it will be returned as the result of the Foo() constructor. Thus, foo will be assigned the primitive value 10, and (new Foo() instanceof Foo) will evaluate to false because foo is a primitive type.

Summary

In summary, a constructor can return values other than this only when the return value of the constructor (Result(6)) is not an Object type. This condition allows for the construction of objects with non-object values or for passing control to other constructors.

The above is the detailed content of When Can a JavaScript Constructor Return Something Other Than 'this'?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template