JavaScript delete 属性的使用 |
delete 是删除对象的一个属性,例如对于一个对象, var obj = {key:5}; delete obj.key就是删除该对象的key属性,这个没什么问题,但当对象的原型prototype对象也存在该属性时,就值得注意了 。 复制代码 代码如下: var A = function(){}; A.prototype.testMe = true; var a = new A(); //覆盖原型属性 a.testMe = true; if(a.testMe){ // 一些关键代码... // .... //删除这属性 delete a.testMe; } //第二段 --------------------------- // 在其它模块中 if(a.testMe){ // 一些关键代码... // .... } 第二段是值得注意的,不要以为a中testMe已尼删除了就不存在了,所以a.testMe就为undefined,即为假,其实它通过原型访问还是存在的,还是true! 这里不留神就中招了 。 //附: 检测对象是否存在某属性, 包括原型链的: if (attrName in obj)… 检测对象是否存在某属性,是对象本身的,而非原型链的: obj.hasOwnProperty(attrName) |