继承

作者: 败于化纤 | 来源:发表于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)

相关文章

  • 继承 继承

    属性拷贝 继承不单单能通过原型链实现,也能通过其他方式实现,属性拷贝就是其中一种方法。 通过属性拷贝也能实现继承子...

  • 继承(单继承,多继承)

    将共性的内容放在父类中,子类只需要关注自己特有的内容 python中所有的内容都是对象,所有的对象都直接或间接继承...

  • js继承方式

    类式继承 构造函数继承 组合继承 类式继承 + 构造函数继承 原型式继承 寄生式继承 寄生组合式继承 寄生式继承 ...

  • Python-学习之路-08 OOP -02

    单继承和多继承 单继承:每个类只能继承一个类 多继承:每个类可以继承多个类 单继承的多继承的优缺点 菱形继承/钻石...

  • 原型相关(二)

    1.继承 继承方式:接口继承(只继承方法签名)实现继承(继承实际的方法)ECMAScript只支持实现继承,并且主...

  • 继承

    继承的引入和概述 继承案例和继承的好处 继承的弊端 Java中继承的特点 继承的注意实现和什么时候使用继承 继承中...

  • Java面向对象三大特性之继承

    继承 一、继承的特点 Java只支持单继承单继承 多继承 单继承、多继承优缺点①单继承优点:提高了代码的复用性,让...

  • 7、面向对象的程序设计3(《JS高级》笔记)

    三、继承 许多OO语言都支持两种继承方式:接口继承和实现继承。接口继承只继承方法签名,而实现继承则继承实际方法。由...

  • 【重学前端】JavaScript中的继承

    JavaScript中继承主要分为六种:类式继承(原型链继承)、构造函数继承、组合继承、原型式继承、寄生式继承、寄...

  • js之继承

    文章主讲 JS 继承,包括原型链继承、构造函数继承、组合继承、寄生组合继承、原型式继承、 ES6 继承,以及 多继...

网友评论

      本文标题:继承

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