There are two ways to determine whether a JS object has a property
- 2020-03-30 00:42:23
- OfStack
Two ways, but slightly different
1, in operator
var obj = {name:'jack'};
alert('name' in obj); // --> true
alert('toString' in obj); // --> true
You can see that both the name and the toString on the primitive chain return true.
2. HasOwnProperty method
var obj = {name:'jack'};
obj.hasOwnProperty('name'); // --> true
obj.hasOwnProperty('toString'); // --> false
Properties inherited from the prototype chain cannot be detected by hasOwnProperty and return false.
Note that while in can detect properties of the prototype chain, for in usually does not.
Of course after rewriting the prototype for the in ie 9 / Firefox/Safari/Chrome/Opera is visible. See: (link: #)