欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

【js】Object.prototype.hasOwnProperty()

程序员文章站 2022-08-06 07:52:22
hasOwnProperty() 方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性 例如:obj.hasOwnProperty(prop) 1. 所有 Object 的对象都会有 hasOwnProperty 方法。这个方法可以用来检测一个对象是否含有特定的自身属性;和 in 运算符不同, ......

hasownproperty() 方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性

例如:obj.hasownproperty(prop)

1. 所有 object 的对象都会有 hasownproperty 方法。这个方法可以用来检测一个对象是否含有特定的自身属性;和 in 运算符不同,该方法会忽略掉那些从原型链上继承到的属性。

     var obj = function(){
     }
        obj.target = function(){

        }
        obj.prototype.target_proto = function(){

        }
        console.log(obj.hasownproperty('target'))     
        console.log(obj.hasownproperty('target_proto'))

【js】Object.prototype.hasOwnProperty()

2. 继承到的属性全为 false 

 var obj = {
            target: '123'
        }
 console.log(obj.hasownproperty('target'))     // true
 console.log(obj.hasownproperty('tostring'))   // false
 console.log(obj.hasownproperty('hasownproperty'))   // false

3.  遍历对象的自身属性 

遍历一个对象的所有属性时忽略掉继承属性,这里因为for... in 循环无法遍历到属性所以如果是自身属性的属性也是无法遍历返回得到的。

var obj = function(){
          
           this.name = '0'
        }
        obj.prototype.fu = function(){       
        }
        var objk = new obj()
        console.log(objk)
        object.defineproperty(objk,'kk',{
            value: 'kk',
            enumerable: false
        })
        for(var key in objk){
            if(objk.hasownproperty(key)){
                console.log('属性' + key , '属性值' + objk[key])
            }else{
                console.log('未找到属性' + key)
            }
        }
        console.log(objk.hasownproperty('kk'))

【js】Object.prototype.hasOwnProperty()

4. 使用 hasownproperty 作为属性名

由于jacascript是不保护 hasownproperty 属性名的,因此某个对像肯能存在这个属性名。此时需要使用 object.prototype 的属性来判断

object.prototype.hasownporperty.call(objk,'kk')

5. 如果像直接获取对象的所有属性的数组可用object.getownpropertynames() 来获取

本文所讨论内容多参考于  

object.prototype.hasownproperty()

 javascript中的可枚举属性与不可枚举属性

javascript中tostirng()与object.prototype.tostring.call()方法浅谈