javascript - 除了执行 Object.prototype.hasOwnProperty.call(obj, key) 是否有 ES6+ 替代方案?

标签 javascript

检查对象是否具有特定键的最可靠方法是:

Object.prototype.hasOwnProperty.call(obj, key)

这提供了一定的保证:如果 keyobjdirect 属性,它只会评估为 true ,即使 obj 没有通常的 Object 作为其原型(prototype)(例如,如果它是用 const obj = Object.create 创建的) (null)).

但这是一口。

在 ES6 或更高版本中是否有任何新的语法/方法(包括 polyfillable 或 Babel 可编译的“建议”)提供相同的保证,但以更好、更易读的方式?

最佳答案

我不知道这有什么语法糖。但是你不需要经常使用它1,所以偶尔写出来应该不会太糟糕。一个equivalent shorter version会是

({}).hasOwnProperty.call(obj, key)

如果你真的需要更频繁地使用它,只需定义一个辅助函数:

const hasOwn = (obj, key) => Object.prototype.hasOwnProperty.call(obj, key);
const hasOwn = Function.prototype.call.bind(Object.prototype.hasOwnProperty);

1:在大多数情况下,您可以省略检查,使用 in 代替,或者应该使用 Map 及其舒适的 has method .

关于javascript - 除了执行 Object.prototype.hasOwnProperty.call(obj, key) 是否有 ES6+ 替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45215727/

相关文章:

javascript - 在 AngularJS 中对两个以上字段求和并在另一个字段中显示结果

javascript - jquery on Click 事件未触发

javascript - 如何确保用户在文本框中输入字符?

javascript - Django:创建一个 "changing button"或等待页面

javascript 警报删除 cookie 否则如果不删除 cookie

javascript - 从android中的 Assets 文件夹在webview中加载带有视频的html文件

javascript - 手动 Angular 销毁指令

javascript - window.open (“sms:…” ) 适用于 android,但不适用于 ios ionic 1

javascript - (jQuery) 将元素选择到 TD 中并过滤仅包含数字的值

带有单个浏览按钮的php多图像上传