1、检测属性
- in:运算符左侧是属性名(字符串),右侧是对象; 如果对象的自有属性或继承属性中包含这个属性,则返回true;
- hasOwnProperty:方法用来检测给定的名字是否是对象的自有属性;对于继承属性返回false;
- propertyIsEnumerable:是hasOwnProperty的增强版,只有检测到是自有属性且这个属性的可枚举性为true时返回true;某些内置属性是不可枚举的;
2、枚举属性
-
for / in 可以在循环体中遍历对象中所有可枚举的属性(包括自由属性和继承属性);
-
Object.keys()返回一个数组,由对象中可枚举的自有属性的名称组成,工作原理类似下面代码:
function keys(o) { if(typeof o !== 'object') throw TypeError(); var result = []; for(var prop in o){ if(o hasOwnProperty(prop)) result.push(prop); } return result; }
-
Object.getOwnPropertyNames()和Object.keys()类似,只是它返回对象的所有自由属性的名称,而不仅仅是可枚举的属性;
3、原型属性
isPrototypeOf():检测一个对象是否是另一个对象的原型(或处于原型链中)