【问题标题】:javascript object delete element [duplicate]javascript对象删除元素[重复]
【发布时间】:2015-10-04 16:10:39
【问题描述】:

我有一个关于删除对象属性的问题,例如:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>test</title>
</head>

<body>
  <script type="text/javascript">
    var tmp = {
      x: 1,
      y: 2,
      z: 3
    };
    var tmp1 = {
      x: 1
    };


    for (pro in tmp) {
      console.log("get tmp <<" + pro + ">> property!!");

      if (!tmp1.hasOwnProperty(pro)) {
        console.log("we will delete <<" + pro + ">> property");
        delete tmp.pro; // or delete tmp[pro];
      }
    }

    console.log("--------------");
    for (p in tmp)
      console.log(p);
    console.log("--------------");

    for (p in tmp)
      document.write(p + "--" + tmp[p] + '<br>');
  </script>
</body>

</html>

如果我使用 delete tmp.pro 结果:x=1 y=2 z=3(不起作用!!),但是当我使用 delete tmp[pro ]结果是x=1(删除就OK了!!),为什么??

【问题讨论】:

    标签: javascript


    【解决方案1】:

    pro 是一个字符串,否则 JavaScript 会将其解释为存在于 tmp 上的 pro 属性。当您使用方括号时,这是另一种按名称引用属性的方式。

    这些是等价的:

    // #1
    bar['baz']
    
    // #2
    bar.baz
    
    // #3
    var prop = 'baz';
    bar[prop]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-30
      • 2020-06-26
      • 2012-10-21
      • 2020-06-18
      • 1970-01-01
      • 2018-03-29
      • 2019-03-23
      • 2014-12-10
      相关资源
      最近更新 更多