new 是组织函数天生实例的下令, ES6为 new 下令引入了 new.target属性。这个属性用于确定组织函数是怎么挪用的。在组织函数中, 若是一个组织函数不是通过 new操作符挪用的, new.target会返回 undefined。
es5中是这样做的:
function Shape(options) { if (this instanceof Shape) { this.options = options } else { // 要么手动给它建立一个实例并返回 // return new Shape(options) // 要么提醒 throw new Error('Shape 组织函数必须使用 new 操作符') } }
es6中可以这样做:
function Shape(options) { // if (new.target !== 'undefined') {} 必须要在 constructor中使用 new.target, 在这里判断会报错 constructor(options) { if (new.target !== 'undefined') { this.options = options } else { throw new Error('必须使用 new 操作符') } } }
以上代码通过 new.target 属性判断返回的是不是undefined即可知道这个组织函数是不是通过 new 操作符挪用
new.target这个属性,当子类继续父类会返回子类的组织函数名称
class Parent { constructor() { console.log(new.target) } } class Child extends Parent { constructor() { super() } } // Child
以上代码 Child子类继续父类, 那么父类组织函数中的 new.target 是子类组织函数的名称。
class Zoo { constructor() { if (new.target === Zoo) throw new Error('Zoo组织函数只能用于子类继续') } } const zoo = new Zoo() // 报错 class Dog extends Zoo { constructor() { super() } } const dog = new Dog() // 不报错
对比股票等传统市场来说,期权是比较亲民的投资方式,它具有低成本、低风险的特点,因此即使是资金较少的投资者也可以参与交易,用较少的投入赚取高额回报。 当然,有些投资者还是感觉在期权交易中很赚到钱,这主...
4、点左下方的”ARP”选项进入设置:在Post data中输入and 1=1 和and 1=2,勾选“Enable Post data”,单击“Execute”进行测验,如图5所示,成果无任何改变,...
2021年2月是阳历2020年的结束,也是农历2021年的开始,很多人都准备在2021年2月左右结婚,但对于老一辈人来说,是非常看重结婚黄道吉日的选择的,结婚要选择一个与两人的生辰八字相符的日子,接下...
本文导读目录: 1、史上最厉害的黑客是谁? 2、史上最厉害的黑客是谁? 3、世界上哪里的黑客厉害? 4、世界上最顶尖的黑客能厉害到什么程度 5、中国NB的黑客分别是谁? 6、中国十...
中新社马尼拉2月7日电 (记者 关向东)当地时间2月7日12点22分,菲律宾南部发生6.3级地震,棉兰老岛首府达沃市震感强烈,有市民从商场中跑出。中国驻达沃总领馆总领事黎林告知中新社记者,总领馆和...
专业盗取微信密码,开房查询,通话记录查询,查询微信聊天记录,定位找人,非常靠谱!近年来自媒体行业进展的可以说是如火如荼,在流量点击的背后,更是靠着强大的信息网去博得群众的眼球,这就对时间和信息的质...