继承

作者: 败于化纤 | 来源:发表于2023-02-08 19:51 被阅读0次

    1.Object.getPrototypeOf(obj)

    • 返回指定对象的原型

    语法:

    Object.getPrototypeOf(object)
    Object.getPrototypeOf(对象名)
    

    返回值:给定对象的原型。如果没有继承属性,则返回 null

    实例:访问obj1的原型对象

    const obj1 = {x:1,y:2}
     console.log(Object.getPrototypeOf(obj1))
    

    2.Object.keys()

    • 返回值:返回一个数组
    • 该数组包含给定对象的自身可枚举属性名
      自身属性:直接定义在对象上的属性就是自身属性。与继承属性相对应。
      可枚举属性:字面量法创建的对象属性都是可枚举的

    语法

    Object.keys(对象名)
    

    返回值:返回一个数组
    该数组包含给定对象的自身可枚举属性名

    实例返回obj1可枚举的属性名

    const obj1 = {x:1,y:2}
          const arr = Object.keys(obj1)
          console.log(arr)
    

    3.Object.values()

    • 返回值:返回一个数组
    • 该数组包含给定对象的自身可枚举属性值
      自身属性:直接定义在对象上的属性就是自身属性。与继承属性相对应。
      可枚举属性:字面量法创建的对象属性都是可枚举的

    语法

    Object.values(对象名)
    

    返回值:返回一个数组
    该数组包含给定对象的自身可枚举属性值

    实例:返回obj1可枚举的属性值

    const obj1 = {x:1,y:2}
          const arr = Object.values(obj1)
          console.log(arr)
    

    4.Object.entries()

    定义:

    • 返回值:返回一个数组
    • 该数组包含给定对象的自身可枚举属性名和属性值
      自身属性:直接定义在对象上的属性就是自身属性。与继承属性相对应。
      可枚举属性:字面量法创建的对象属性都是可枚举的

    语法:

    Object.entries(对象名)
    

    返回值:返回一个数组
    该数组包含给定对象的自身可枚举属性名和属性值

    实例:返回obj身上可枚举的属性值和属性名

    //Object.keys
            const obj = {
                x : 1,
                y : 2,
            }
            //在obj身上一个z:3
            obj.o = 4
            obj.__proto__.z=3
            Object.getPrototypeOf(obj).w = 4
            console.log(obj.__proto__)
           const Arr = Object.entries(obj)
            console.log(Arr)//Array(3) [ (2) […], (2) […], (2) […] ]0: Array [ "x", 1 ]1: Array [ "y", 2 ]2: Array [ "o", 4 ]
            //可枚举属性:字面量法创建的对象属性都是可枚举的
            //自身属性:直接定义在对象上的属性就是自身属性。与继承属性相对应。
    

    5.Object.hasOwnProperty()

    定义:

    • 检测一个属性是否是自身属性

    语法

    obj.hasOwnProperty("prop")
    对象名.hasOwnProperty(“属性名”)
    

    返回值:返回一个布尔值。

    • false : 不是
    • true : 是

    实例:检测一个属性是否是自身属性

      const obj = {
                x : 1,
                y : 2,
            }
            //在obj身上一个z:3
            obj.o = 4
            obj.__proto__.z=3
            Object.getPrototypeOf(obj).w = 4
           const Arr = obj.hasOwnProperty("mm")//加引号  false
            console.log(Arr)
    

    6.Object.propertyIsEnumerable()

    定义:该方法用于检测指定的属性是否可枚举
    语法:

    Object.propertyIsEnumerable("属性名")
    

    返回值:布尔值
    实例:如何检测一个属性是否可枚举

      const obj = {
                x : 1,
                y : 2,
            }
            //将y修改成不可枚举
            Object.defineProperty(obj,"y",{
                configurable:true,//是否可配置
                enumerable:false,//是否可枚举
                writable:false,//是否可修改
                value:2,//值
            })
            console.log(obj.propertyIsEnumerable("x"))//true
     console.log(obj.propertyIsEnumerable("y"))//false
    

    7.object.assign()

    定义:将所有的可枚举属性从一个或多个源对象复制到目标对象
    语法:

    object.assign(obj1,obj2)
    
    • obj1:目标对象
    • obj2:源对象

    返回值:修改后的对象
    实例:将obj2身上的属性复制给obj1

     const obj1 = {
                x : 1,
            }
            const obj2 = {
                y:2,
                z:3
            }
    Object.assign(obj1,obj2)
        console.log(obj1)
    

    8.对象的拷贝

    方法1:

     const obj1 = {
                x : 1,
            }
            const obj2 = {
                y:2,
                z:3
            }
            obj2.__proto__.w=4//可枚举
            //赋值obj2的属性复制到obj1中
            //方法1
            //1.使用遍历:迭代 枚举
            for(key in obj2){//遍历对象的可枚举属性(自身加继承)
                 obj1[key] = obj2[key]
             }
             console.log(obj1)//Object { x: 1, y: 2, z: 3 , __proto__w: 4}
    

    方法2:

     const obj1 = {
                x : 1,
            }
            const obj2 = {
                y:2,
                z:3
            }
            obj2.__proto__.w=4//可枚举
    //方法2
              for(key of Object.keys(obj2)){
                obj1[key] = obj2[key]
            }
           console.log(obj1)
    

    方法3

    Object.assign(obj1,obj2)
        console.log(obj1)
    

    相关文章

      网友评论

          本文标题:继承

          本文链接:https://www.haomeiwen.com/subject/qacqkdtx.html