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() // 不报错
呵呵,哪会有黑客高手,都是骗子,省省吧,我被骗去好几千 并不能,许多说能的只是抓住你们盲目寻医的心理。自行拨打微信客服电话举报,并且报案。 首先,黑客是个贬义词,黑客智商高,能力强,请不要相信黑客会有...
当鼠标移入顶部菜单时,菜单顶部有光标跟随,当移出时,光标自动回到当前页面菜单位置。这种效果应该怎么实现呢? 如下图: 顶部导航光标定位 线上效果图,查看: 制件方法 1. 页面与导航栏制作 按平时...
本文导读目录: 1、内容是什么意思 2、内容是什么啊? 3、内容是什么? 4、内容形式是什么 5、“内容”的英文怎么说? 6、内容是是什么意思 7、“内容” 与 “含义” 有什...
手机上砸了一下,对电脑主板有一定的冲击性,会造成线排松脱或是电脑主板毁坏。充电电池接触不良现象或线排松脱,这类状况必须拆卸,再次接好充电电池与线排就可以;电脑主板出現难题提议备份数据好数据信息,立即到...
本文导读目录: 1、有哪些好看的美剧推荐 2、如何评价美剧 《黑客军团》 3、哪位大神有黑客军团第二季2016年上映的由 拉米·马雷克主演的百度云资源 4、美剧《黑客军团》的资源谁有...
9月28日至29日,第13届全球纺织服装供应链大会在深圳大浪时尚小镇隆重举行。在28日上午举行的开幕仪式上,沙溪镇党委副书记、镇长徐业恒接过全球纺织服装供应链大会会旗,正式宣布第14届全球纺织服装...