hasOwnProperty和Object.getOwnPropertyNames

本文介绍JavaScript中检测对象属性的方法,包括hasOwnProperty与Object.getOwnPropertyNames,通过示例代码展示了如何使用这两种方式来查找对象实例上而非原型链上的属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 ① 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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值