Mic*_*per 5 javascript safari webkit ecmascript-6
"new.target属性允许您检测是否使用new运算符调用了函数或构造函数" [1]
new.target如果未使用new以下函数调用函数,我可以在if语句中使用以抛出错误:
if(!new.target){
throw new Error('Must be called with new keyword!')
}
Run Code Online (Sandbox Code Playgroud)
然而,野生防止new.target从与正在使用!以这种方式,与所述错误消息
new.target不能在前缀运算符后出现
但是可以检查正面条件!
if(new.target){}
else{
throw new Error('Must be called with new keyword!')
}
Run Code Online (Sandbox Code Playgroud)
这是safari的解析引擎的错误吗?或替代,应该我是用new.target在他们执行的方法是什么?
简单的repro:https://codepen.io/mdjasper/pen/eEWORY ? edit = 0012
编辑:此问题已在webkit bugzilla上提交:https://bugs.webkit.org/show_bug.cgi?id = 157970
这个语法应该是支持的,并且确认错误是webkit的bug:
if(!new.target){
throw new Error('Must be called with new keyword!')
}
Run Code Online (Sandbox Code Playgroud)
补丁已编写并合并,并将随 webkit 的未来版本一起发布
https://bugs.webkit.org/show_bug.cgi?id=157970#c17
在修复程序出现在发布版本之前,解决方法是显式检查new.target
if(new.target === undefined){
throw new Error('Must be called with new keyword!')
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
278 次 |
| 最近记录: |