“的new.target属性让你检测功能或构造函数被调用使用new运算符” [1]new.target用一个前缀操作
我可以在使用new.target
if语句如果抛出一个错误功能没有使用new
称为:
if(!new.target){
throw new Error('Must be called with new keyword!')
}
然而,野生防止new.target
从与以这种方式!
被使用,并显示错误消息
前缀操作
我跟踪下来到this line in Webkit后
new.target不能来。
然而,积极的条件可以检查!
if(new.target){}
else{
throw new Error('Must be called with new keyword!')
}
这是safari解析引擎的错误吗?或者,应该我会以他们强制的方式使用new.target
?
简单的摄制:https://codepen.io/mdjasper/pen/eEWORY?editors=0012
编辑:这个问题已经提交的WebKit的Bugzilla的:https://bugs.webkit.org/show_bug.cgi?id=157970
出于好奇,如果你说'!(new.target)'会发生什么? – mhodges
伟大的问题,没有想到这一点。试过了,但仍然出错:/ –
男人,那太奇怪了。 [浏览器兼容表](https://kangax.github.io/compat-table/es6/)显示它在Safari中完全支持,但[MDN](https://developer.mozilla.org/en-US/) docs/Web/JavaScript/Reference/Operators/new.target)说不支持... – mhodges