javascript - 测试对象是否存在 JavaScript

标签 javascript

我不敢相信以前没有人问过这个问题,但我尽可能多地搜索但找不到它,所以就在这里。

我想测试动态构建的 JavaScript 对象是否存在。然而,当我测试这个时:

var myObject = {};
var dynamicName = "customName";

if(myObject[dynamicName].object == undefined){
  myObject[dynamicName].object = "something"; // Make an entry in the dynamic object
  alert("The object didn't exist, so we populated it");
}else{
  alert("The object already exist");
}

如果该对象不存在,并且我尝试运行上述代码,则会收到错误消息“myObject[dynamicName] 未定义”,并且所有 javascript 执行都会停止。

有没有办法检查这个对象是否存在我想要的而不导致这样的错误?

最佳答案

如果 myObject[dynamicName] 不存在,则无法访问其属性。尝试访问或分配未定义的属性会导致错误。

您需要创建对象,然后才能创建属性

if (myObject && myObject[dynamicName] && myObject[dynamicName].object !== undefined) {
    alert("The object already exists");
} else {
    myObject = myObject || {};
    myObject[dynamicName] = myObject[dynamicName] || {};
    myObject[dynamicName].object = something;
    alert("The object didn't exist, so we populated it");
}

关于javascript - 测试对象是否存在 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51530139/

相关文章:

javascript - 在 NodeList 上添加事件监听器

javascript - HTML 完全删除并忽略我从 JSON 响应中得到的字符串中的控制字符

javascript - 无法在 IE10 中使用 XmlHttpRequest 加载 Blob

javascript - AngularJS - 如何通过q​​uerySelector获取所有元素并禁用链接

javascript - 基于 ScriptEngine 'javascript' 进行不正确的正则表达式验证(对于 IP 地址)

javascript - 使用 Content-Disposition :attachment 在浏览器中重置等待光标

javascript - 单击菜单事件项时标题滚动到顶部

javascript - 无法将日历数据保存到 firebase 中

javascript - 不显眼地提交 Ajax 表单两次

javascript - jquery 倒计时器 - 按键时重置