-
Object.hasOwnProperty()
使用 hasOwnProperty
()方法判断一个对象的自身属性或继承属性(原型链上)。返回一个boolean值,true表示是自身属性,false表示是继承属性(或非自身属性)
语法:对象.hasOwnProperty
("属性名")
示例1:
function Demo(name){
this.name=name; //自身属性
}
Demo.prototype.age='10'; //原型链的,非私有的属性
var demo=new Demo('lilei');
console.log(demo.hasOwnProperty('age'));//false.........非私有的属性
console.log(demo.hasOwnProperty('name'));//true........自身属性
console.log(demo.hasOwnProperty('toString'));// 返回 false.........非私有的属性
示例2:
var obj = {
a: 1,
fn: function(){
},
c:{
d: 5
}
};
console.log(obj.hasOwnProperty('a')); // true
console.log(obj.hasOwnProperty('fn')); // true
console.log(obj.hasOwnProperty('c')); // true
console.log(obj.c.hasOwnProperty('d')); // true
console.log(obj.hasOwnProperty('d')); // false, obj对象没有d属性
var str = new String();
// split方法是String这个对象的方法,str对象本身是没有这个split这个属性的
console.log(str.hasOwnProperty('split')); // false
-
Object.getOwnPropertyNames()
使用Object.getOwnPropertyNames()
方法返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组。
语法:Object.getOwnPropertyNames(‘指定对象’)
示例:
//数组对象:
var arr = ["a", "b", "c"];
console.log(Object.getOwnPropertyNames(arr).sort()); // ["0", "1", "2", "length"]
// 类数组对象
var obj = { 0: "a", 1: "b", 2: "c"};
console.log(Object.getOwnPropertyNames(obj).sort()); // ["0", "1", "2"]
// 使用Array.forEach输出属性名和属性值
Object.getOwnPropertyNames(obj).forEach(function(val, idx, array) {
console.log(val + " -> " + obj[val]);
});
// 输出
// 0 -> a
// 1 -> b
// 2 -> c