ES9 中引入了 instanceof 操作符的其中一个提案,这个提案增加了对 instanceof 的支持。在 ES9 之前,instanceof 的使用场景受到了一些限制,只能用于比较一个对象是否是某个构造函数的实例。但是在 ES9 中,通过 instanceof 的升级版,我们可以更为准确地判断对象是否符合指定的特性。
ES9 中的 instanceof 支持在左侧使用输入原型,这使得它们能够实现更加细粒度的类型检查。这样做的好处是,我们可以更加准确地区分一些特殊情况。比如,我们需要判断一个数组是否为空,那么我们只需要使用下面的代码:
const arr = [1, 2, 3] if (arr instanceof Array && arr.length === 0) { console.log('The array is empty!') } else { console.log('The array is not empty.') }
在上面的代码中,我们通过 instanceof 增加了对数组的类型判断,结合 length 的判断,更加准确地得出了数组是否为空的结论。
除了增加对原型的支持,ES9 中的 instanceof 还有一些其他的更新:
- 当判断的左侧不是对象类型时,会抛出错误;
- instanceof 操作符的行为与 Object.getPrototypeOf 一致;
- 对输入的原型进行访问,如果其为 null,则会返回 false。
示例代码如下:
-- -------------------- ---- ------- ----- ------ -- ----- ---------- ------- ------ -- ----- ------ - --- -------- ----- ---------- - --- ------------ ------------------ ---------- ------- -- ---- ---------------------- ---------- ------- -- ---- ------------------ ---------- ----------- -- ----- ---------------------- ---------- ----------- -- ---- ------------------ ---------- ------ -- ----- ----- --- - -- --------------- ---------- ------- -- ---- --------------- ---------- ------- -- ----- ----------------- ---------- ------- -- ----- ----- -------- - -- -------------------- ---------- ------- -- ---- -------------------- ---------- ------ -- ---- --------------------------- --- -- -- ----
从上面的代码可以看出,我们使用 instanceof 可以对多种类型进行准确判断。总结一下,在 ES9 中,我们可以通过 instanceof 实现更为准确、细粒度的类型检查。对于前端开发者来说,优化代码的性能和准确性自然是一个不可忽视的细节。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64c4a7c083d39b488181f01b