① hasOwnProperty:检测属性是否存在对象实例中(可枚举属性),如果存在则返回true,不存在则返回false
注意:此方法无法检查该对象的原型链中是否具有该属性
使用方法:obj.hasOwnProperty(key);
② Object.getOwnPropertyNames:返回对象自己的属性的名称,是一个数组。(包括可枚举的和不可枚举的属性)
一个对象的自己的属性是指直接对该对象定义的属性,而不是从该对象的原型继承的属性。
对象的属性包括字段(对象)和函数。
使用方法:Object.getOwnPropertyNames(obj);
举个栗子:
找出对象 obj 不在原型链上的属性
1、返回数组,格式为 key: value(冒号后面还有一个空格)
2、结果数组不要求顺序
解答一:使用hasOwnProperty
function iterate(obj) {
var arr = [];
//用for in 对obj对象的属性进行遍历
for(var key in obj){
if (obj.hasOwnProperty(key)){ //hasOwnproperty返回对象实例中的属性
arr.push(key + ": " + obj[key]);
}
}
return arr;
}
解答二:使用Object.getOwnPropertyNames
function iterate(obj) {
var result = Object.getOwnPropertyNames(obj); //返回一个数组,包含对象实例属性的名称
var l = result.length;
//遍历result数组,按要求输出结果
for(var i = 0; i < l; i ++){
var name = result[i];
result[i] = result[i] + ": " + obj[name]; //把“属性: 值”赋给result
}
return result;
}