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() // 不报错
关于国产动画电影,从2015年上映的《西游记之大圣归来》可以说是第一部燃起影迷热心的神话电影,踏碎灵霄,猖狂桀骜,镣铐破碎,虽没有五彩祥云,但却是一身金甲。让人们对国产动画电影制造充满了期待。还记得2...
2019年8月,一伙来自中东的黑客悄无声息的遛进了美国政府的网站,黑客们带走了什么没有人清楚,不过后知后觉的美国政府在几个月之后才发出了相关漏洞的预警,这个漏洞存在于美国政府的VPN提供商Pl...
国内是的經典信用度观查网址详尽推荐(赚钱本来就是浅易的) 1、第一观察网 我国很大 调查站,调查数量多,价格高,如果花十多分钟填完问卷调查观查,就能日赚现金;公布著名品牌点评、添加话题讨论探讨讨论还能...
问问他一些基础的常识试试嘛,比如:“你知道Helloworld是什么吗?”并要求他5秒之内答以防他搜索诸如此类的问题还有很多啊,又比如:“你用什么操作。 目前为止黑客技术难度和基础是很难获取的,金钱交...
站在2019年的尾巴上遥望,2020年必将是中国经济的新起点,一切旧的模式都将尘归尘,土归土。各种新的模式和红利,也将破土而出。 紧握旧地图找不到明天的新大陆,固守旧思维看不到明天的太阳,我们一定要...
美国三大情报机构有何区别,都听谁的指挥? 1、在美国情报体系中,它是唯一一个独立的情报部门,直接听命于总统,费用由总统向国会申请,并不用向其他部门汇报,没有上级机构,局长由总统直接任命,主要用于对外情...