我试图访问JavaScript对象中的某个成员.为了做到这一点,我需要尝试几个关键值.
例如,Object['text/html']它将为我提供HTML文档的导出链接.但是,并非此类型的每个对象都具有text/html密钥对值.
在Python中,我将使用Try-Catch块解决此问题,但有KeyError例外.如果我可以在javascript中执行类似的操作,就像在Try-Catch块中使用异常一样,这将是很棒的.
但是,如果存在替代品而不是try catch块,那么确实达到了相同的最终目标,我也想了解它们.
我宁愿使用异常而不是使用函数.我这样做是因为text/html密钥可能不存在,但应该存在.一个例外似乎更适合这种情况
jfr*_*d00 11
在读取或写入不存在的属性时,Javascript不会生成异常.阅读时,它只会返回undefined.在编写它时,它只是创建属性.
您可以创建自己的函数来测试该属性是否存在,如果不存在则抛出异常(但是您必须随时调用该函数),但是JS不会在它自己之外做出异常你要求的.
如果要测试javascript中对象上是否存在键,可以将此构造与in运算符一起使用:
var obj = {};
var key = "test";
if (key in obj) {
// key exists
} else {
// key doesn't exist
}
Run Code Online (Sandbox Code Playgroud)
如果您尝试读取不存在的键,您将获得undefined值.
var obj = {};
var value = obj.test;
alert(value === undefined);
Run Code Online (Sandbox Code Playgroud)
该in运营商不告诉你的密钥是否存在测试一个更好的工作undefined,因为undefined是存在的主要法律价值.
在许多情况下,您控制键所具有的值以及存在的键永远不会有假值,您还可以检查该键是否具有真值:
var obj = {};
var obj.test = "hello";
if (obj.test) {
// key exists and has a truthy value
}
Run Code Online (Sandbox Code Playgroud)
如果你想确保对象本身具有属性而不是它继承的任何原型,那么你可以这样做:
var obj = {};
var obj.test = "hello";
if (obj.hasOwnProperty(test)) {
// key exists on the object itself (not only on the prototype)
}
Run Code Online (Sandbox Code Playgroud)