ES6 new.target
当代码 new foo(...) 执行时:
- 一个新对象被创建。它继承自 foo.prototype.
- 构造函数 foo 被执行。执行的时候,相应的传参会被传入,同时上下文(this)会被指定为这个新实例。
- 如果构造函数返回了一个"对象",那么这个对象会取代整个 new 出来的结果。如果构造函数没有返回对象,那么 new 出来的结果为步骤1创建的对象
在 ES6 的类(class)构造函数方法中,new.target 指向直接被 new 执行的 constructor()(然而其 name 还是 class name)// 在原型连上的 new.target 也为 new 后面的构造函数
另:声明式定义函数 function a(){} 的 function name 为 a。
new 运算符为构造函数(可以只是一个函数)新建一个对象并指定其为构造函数的上下文。
arguments(函数内部变量)的callee属性指向当前函数,然而推荐用函数名,严格模式已禁用。
arguments.callee.caller(即Function的caller属性)以废弃