Javascript对象删除元素

javascript object delete element

本文关键字:元素 删除 对象 Javascript      更新时间:2023-09-26

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

<!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>

如果我使用删除tmp。pro的结果:x=1 y=2 z=3(是不工作的!!),但当我使用delete tmp[pro]的结果是x=1(删除是可以的!!),为什么??

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

它们是等价的:

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