您可以使用new.target
伪属性来检测函数是作为构造函数调用(使用 new 运算符)还是作为常规函数调用。
- 如果使用 new 运算符调用构造函数或函数,则 new.target 返回对构造函数或函数的引用。
- 对于函数调用,new.target 是未定义的。
function Myfunc() {
if (new.target) {
console.log('called with new');
} else {
console.log('not called with new');
}
}
new Myfunc(); // called with new
Myfunc(); // not called with new
Myfunc.call({}); not called with new
你如何在javascript中使对象可迭代
默认情况下,普通对象是不可迭代的。Symbol.iterator