new.target
该表达式在函数中使用,返回的是当前的构造函数。若该函数不是通过new调用的,则返回undefined
通常用于判断某个函数是否是通过new在调用

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
function User(name, age, gender){//构造函数
console.log(new.target);
if(new.target === User){//通过new关键字调用构造函数
this.name = name;
this.age = age;
this.gender = gender;
}else{
return {
name :name,
age :age,
gender:gender
};
}
}
var u1 = new User("张三", 18, "男");//通过new调用User构造函数
var u2 = User("李四", 21, "女");//直接调用User函数
</script>
</body>
</html>