Object.hasOwnProperty与Object.getOwnPropertyNames的区别。

  •  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


 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值