search

Home  >  Q&A  >  body text

javascript - 关于js删除对象属性的问题

"term": 1,
"year": "2014-2015",

这是对象中的两个属性

delete comments[item].year;
delete comments[item].term;

year能删除 而term不能删除 我认为是不是因为他是整形的 那有什么办法能删掉term 连同属性名一起删除

迷茫迷茫2817 days ago359

reply all(2)I'll reply

  • PHP中文网

    PHP中文网2017-04-10 15:06:34

    delete运算符可以用来删除对象的属性。如果对象包含该属性,那么该属性就会被删除,它不会触及原型链中的任何对象。

    var p = {
        "term" : 1,
        "year" : "2014-2015"
    };
    delete p.term;
    delete p.year;
    console.log(p.term);  //undefined 不存在则返回undefined
    console.log(p.year);  //undefined 
    

    但是,删除对象的属性可能会让来自原型链中的属性透现出来:

    var A = {
       "term" : 1
    }
    var p = {
        "term" : 1,
        "year" : "2014-2015"
    };
    var B = function(){};
    B.prototype = A;
    p = new B();
    delete p.term;
    delete p.year;
    console.log(p.term);  // 1        暴露了原形链中的属性
    console.log(p.year);  //undefined 不存在则返回undefined
    

    所以你还是检查下你的原型链上是否有这个属性,贴出你的完整代码吧 o(╯□╰)o

    reply
    0
  • 大家讲道理

    大家讲道理2017-04-10 15:06:34

    jsvar p = {
    "term" : 1,
    "year" : "2014-2015"
    };
    
    console.log(p);
    
    delete p.year
    delete p.term;
    
    console.log(p);
    

    都可以删除呀

    reply
    0
  • Cancelreply