访问有时为空对象的属性而不会出错[重复]
Posted
技术标签:
【中文标题】访问有时为空对象的属性而不会出错[重复]【英文标题】:Access a property of a sometimes null object without an error [duplicate] 【发布时间】:2014-06-30 02:55:15 【问题描述】:在javascript中,我经常想访问一个可能不存在的对象的属性。
例如:
var foo = someObject.myProperty
但是,如果 someObject 未定义,这将引发错误。访问可能为 null 的对象的属性,如果不存在则简单地返回 false 或 null 的常规方法是什么?
在 Ruby 中,我可以使用 someObject.try(:myProperty)
。有 JS 等价物吗?
【问题讨论】:
检查其类型是否未定义是一种方法。 【参考方案1】:我认为没有与您在 JavaScript 中所要求的直接等价的内容。但是我们可以编写一些 util 方法来做同样的事情。
Object.prototype.safeGet = function(key)
return this? this[key] : false;
var nullObject = null;
console.log(Object.safeGet.call(nullObject, 'invalid'));
这是 JSFiddle:http://jsfiddle.net/LBsY7/1/
【讨论】:
handy 得心应手,谢谢Object.prototype.safeGet
让我崩溃了 botbuilder.. 奇怪...【参考方案2】:
如果你经常请求,你可以创建一个检查它的函数,比如
function getValueOfNull(obj, prop)
return( obj == null ? undefined : obj[prop] );
【讨论】:
【参考方案3】:建议
if(typeof someObject != 'undefined')
var foo = someObject.myProperty
else
return false; //or whatever
您也可以在property
上添加控件,方法是:
if(someObject.myProperty)
很明显里面是第一个if
或者(“也许”不太正确)
if(someObject)
var foo = someObject.myProperty
第二个示例应该可以工作,因为 undefined
被识别为 falsy
value
【讨论】:
我认为唐要求单行上下文,“如果”上下文很明显以上是关于访问有时为空对象的属性而不会出错[重复]的主要内容,如果未能解决你的问题,请参考以下文章
2021-04-09【技术】关于空数组和空对象为true的问题