[Javascript] MetaProgramming: new.target

new.target is a new “magical” value available in all functions, thoughin normal functions it will always be undefined. In any constructor,new.target always points at the constructor that new actuallydirectly invoked.

class Parent {
    constructor() {
        if (new.target === Parent) {
            console.log( "Parent instantiated" );
        }
        else {
            console.log( "A child instantiated" );
        }
    }
}

class Child extends Parent {}

var a = new Parent();
// Parent instantiated

var b = new Child(); // here new.target is undefined
// A child instantiated

 When the class is extended, it will show undefined in the parent class construcotr().

原文地址:https://www.cnblogs.com/Answer1215/p/5582031.html