在 JavaScript 中,我们常常要判断一个对象是否拥有某个属性,通常用以下方式:
if (obj.hasOwnProperty(prop)) { // do something }
这个方法确实可以解决问题,但有时也会带来一些烦恼:
- 对象继承自原型链的属性也会被识别为自己拥有的属性。
- 写起来比较冗长,每次都需输入
hasOwnProperty
。
npm 包 es-hasown 就是为了解决以上问题而诞生的。本文介绍如何使用此包。
安装
使用 npm 安装即可:
npm install es-hasown
使用方法
- 引入 es-hasown 模块
const hasOwn = require("es-hasown");
或
import hasOwn from "es-hasown";
- 使用 hasOwn 函数替代 hasOwnProperty 函数
if (hasOwn(obj, prop)) { // do something }
为什么要使用 es-hasown
es-hasown 包的作用是判断一个对象是否拥有某个属性,和原生的 hasOwnProperty 函数是一样的。为什么我们要使用 es-hasown 呢?
- 不受原型链干扰
es-hasown 函数只检查对象自身是否有该属性,不受原型链干扰。
比如:
-- -------------------- ---- ------- ----- --- - ------------------- ---- ------- - -- -- -- --------- -- ----------- ------- -- ----- ----------- ------- -- ---- -- ---- -------------- -- -------------------------- -- ---- -------------------------- -- ----
- 简化代码
es-hasown 函数更加简短明了,使用起来比原生的 hasOwnProperty 函数方便。
// 使用 es-hasown 函数 hasOwn(obj, 'prop'); // 使用原生 hasOwnProperty 函数 obj.hasOwnProperty('prop');
示例
以下是一个示例:
-- -------------------- ---- ------- ----- ------ - --------------------- ----- --- - - ---- ----- -- -- ------------ ------- - --------------------- -- ----- - ----- ------ - ----------------- - --------- - ----- - - ----- - - --- --------------- -- ----------- -------- - -------------------- -- --------- -
总结
es-hasown 包可以更加方便地判断对象是否拥有某个属性,不受原型链干扰,使用起来也更简单。当我们需要频繁地判断对象是否拥有某个属性时,可以考虑使用 es-hasown 包。
参考链接
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65702