繁体   English   中英

在Javascript中。 我如何判断对象中是否存在字段?

[英]In Javascript. how can I tell if a field exists inside an object?

当然,我想在代码方面做到这一点。 这并不是说我面临的这个问题没有其他选择,只是好奇。

这将忽略通过原型链向下传递的属性。

if(obj.hasOwnProperty('field'))
{
    // Do something
}

更新:按照 Gary Chambers 的建议使用hasOwnProperty方法。 下面的解决方案将起作用,但它被认为是使用hasOwnProperty的最佳实践。

if ('field' in obj) {
}

除了上述之外,您还可以使用以下方式:

if(obj.myProperty !== undefined) {
}

lodash 库中有has方法。 它甚至可以检查嵌套字段。

_.has(object, 'a');     
_.has(object, 'a.b');

当然,我想在代码方面做这个。 并不是说我面临的这个问题没有替代方案,只是好奇。

真的不记得这是从哪里来的,但这是我用的:

 if (!! document.getElementById('id_of_field'))
     {
       // The field exist even if it's empty
     }

这个问题很老,但对某些人仍然有用。

现在,如果您有非硬编码密钥,建议使用另一种方法。

你必须从这个开始:

foo.hasOwnProperty("bar");

对此:

Object.prototype.hasOwnProperty.call(foo, "bar");

此更新特别有用,特别是如果您使用像 ESLint 这样的 linter,它在“eslint:recommended”规则集中默认具有此规则。 这种新方法主要是出于安全原因。 整个解释都可以在这个页面上找到。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM