delete is to delete an attribute of an object. For example, for an object,
var obj = {key:5};
delete obj.key is to delete the key attribute of the object. This is no problem, but when the prototype of the object It is worth noting when this attribute also exists on the object.
var A = function(){};
A.prototype.testMe = true;
var a = new A();
//Override prototype properties
a.testMe = true;
if(a.testMe){
/ / Some key codes...
// ....
//Delete this attribute
delete a.testMe;
}
//Second paragraph ------ ---------------------
// In other modules
if(a.testMe){
// Some key codes.. .
// ....
}
The second paragraph is worth noting. Don’t think that testMe in a no longer exists after it has been deleted, so a.testMe If it is undefined, it is false. In fact, it still exists through prototype access, and it is still true!
I got tricked here if I didn't pay attention.
//Attachment:
Detect whether an object has a certain attribute, including the prototype chain:
if ('attrName' in obj)...
Detect whether an object has a certain attribute, which belongs to the object itself, and Non-prototype chain:
obj.hasOwnProperty('attrName')
Statement:The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn