


How does `new.target` Enable Inheritance and Differentiate Constructor Calls in ES6 Classes?
Understanding "new.target"
Definition and Location
Despite being mentioned only three times in ECMAScript 2015 specification, "new.target" is a meta property defined in §12.3.8.
Purpose and Usage
"NewTarget" retrieves the value of the [[NewTarget]] internal property of the current function environment. This value is set when a function is called as a constructor.
If a function was invoked using new, new.target will reference the constructor function used to create the new instance. This enables developers to distinguish between constructor and normal function calls.
Significance for ES6 Classes
"NewTarget" plays a crucial role in ES6 classes. When a class constructor is invoked with new, it returns this, which is initially uninitialized. However, super() initializes this by calling the parent constructor while passing new.target as an argument.
This mechanism allows classes to inherit from built-in objects, such as Array or Map. By passing new.target to the parent constructor, the correct prototype chain is established, ensuring that the new instance inherits from the appropriate prototype object.
Example
Consider the following class structure:
class Parent { constructor() { // new.target = Child (from super() call) console.log(new.target); } } class Child extends Parent { constructor() { // new.target = Child (from new call) super(); console.log(this); } } new Child;
In this example, new.target is:
- Child in the Parent constructor (called from the super() call)
- Child in the Child constructor (called with new)
The output will be:
Child { __proto__: Child.prototype }
This demonstrates how new.target can be used to differentiate between constructor and normal function calls, as well as to manage inheritance in ES6 classes.
The above is the detailed content of How does `new.target` Enable Inheritance and Differentiate Constructor Calls in ES6 Classes?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



Article discusses creating, publishing, and maintaining JavaScript libraries, focusing on planning, development, testing, documentation, and promotion strategies.

The article discusses strategies for optimizing JavaScript performance in browsers, focusing on reducing execution time and minimizing impact on page load speed.

Frequently Asked Questions and Solutions for Front-end Thermal Paper Ticket Printing In Front-end Development, Ticket Printing is a common requirement. However, many developers are implementing...

The article discusses effective JavaScript debugging using browser developer tools, focusing on setting breakpoints, using the console, and analyzing performance.

There is no absolute salary for Python and JavaScript developers, depending on skills and industry needs. 1. Python may be paid more in data science and machine learning. 2. JavaScript has great demand in front-end and full-stack development, and its salary is also considerable. 3. Influencing factors include experience, geographical location, company size and specific skills.

The article explains how to use source maps to debug minified JavaScript by mapping it back to the original code. It discusses enabling source maps, setting breakpoints, and using tools like Chrome DevTools and Webpack.

In-depth discussion of the root causes of the difference in console.log output. This article will analyze the differences in the output results of console.log function in a piece of code and explain the reasons behind it. �...

How to merge array elements with the same ID into one object in JavaScript? When processing data, we often encounter the need to have the same ID...
