day21-Object方法

一、Object原型方法

  1. hasOwnProperty--用于判断某个对象是否具有某个自带属性
    语法:对象.hasOwnProperty(属性名)--返回bool,true则有,false就没有
    注意: 只有自己内非继承的属性才能返回true,继承的和不是自己的属性都是false。
  2. isPrototypeOf--判断一个对象是否在另一个对象的原型上
    语法:对象a.isPrototypeOf(对象b)--返回布尔值
  3. propertyIsEnumerable-- 用于判断是否可以从对象中遍历得到某个属性
    语法:对象.propertyIsEnumerable(属性名) // 返回布尔值
  4. toString-- 用于将对象转为字符串
    语法:对象.toString() // 返回'[object Object]'
    数字的toString-----转成字符串,并切换进制
    字符串有toString
    布尔值有toString
    时间日期有toString
    undefined和null没有toString
  5. toLocaleString和 valueOf没有实际的效果,是为了让子原型能具备这些方法,来实现不同类型数据 的功能。
    对象的toLocaleString没有特殊意义,跟toString的结果是一样的
    数字有toLocaleString----千分位分割
    注意:只有数字和时间日期对象调用的时候,能起到作用,其他类型的数据调用后,会默认调用 toString方法转成字符串而已。
    对象的valueOf没有特殊意义
    时间日期对象的valueOf获取时间戳的
    注意: 时间日期对象调用能获取到时间戳,其他类型的对象调用,会得到具体的值,相当于                            console.log(数组/对象)的值


二、Object方法

1、assign--用于将一个对象中可遍历的属性复制到另一个目标对象中,返回目标对象

          语法:var 新目标对象 = Object.assign(原目标对象, 被复制的对象)
            通常用于做浅克隆,将一个对象中的属性复制在另一个空对象中。

2、create--用于创建一个对象,并指定这个对象的原型 语法:var 对象 = Object.create(指定的原型对象, {对象键值对的描述}) // 返回创建好的对象

参数1必填,且参数必须是一个对象或null。参数2是可选项,默认是空对象
 通常用于做浅克隆,将一个对象中的属性复制在另一个空对象中。

3、defineProperties--用于给对象添加或修改一个属性 语法:Object.defineProperties(对象, {对象键值对的描述}) // 返回处理后的对象
4、defineProperty--用于监视对象某个属性被访问或被修改的操作 语法:Object.defineProperty(对象, 属性名, {

    // 对象属性的描述
    writable: false, // 属性是否可修改
    enumerable: true, // 属性是否可遍历
    configurable: false, // 属性是否可删除
    get: undefined, // 访问属性值的时候执行什么程序
    set: undefined // 设置属性值的时候执行什么程序
    }

5、entries--用于将对象中可遍历的键值对组成一个数组并返回 语法:Object.entries(对象) // 返回数组
6、freeze--用于冻结一个对象,让对象不能新增、不能修改、不能删除、不能改原型,不能改 属性的特性 语法:var 对象 = Object.freeze(对象) // 返回被冻结的对象

7、fromEntries--跟entries的作用相反,将一个map格式的数组(多个键值对组成的数组)转成一个对象

    语法:Object.fromEntries(map格式的数据) // 返回键值对组成的对象
    可以将map转成对象

8、getOwnPropertyDescriptors--获取对象中某个属性对应的描述对象

    语法:Object.Object.getOwnPropertyDescriptors(对象) -- 返回对象的描述符

9、getOwnPropertySymbols--将对象中所有symbol属性,组成一个数组。

    语法:Object.getOwnPropertySymbols(对象) - 将对象中所有的symbol属性组成一个数组返回

10、getPrototypeOf--获取对象的原型对象。

     语法:Object.getPrototypeOf(对象) - 获取原型

11、hasOwn--判断一个属性是否属于某个对象,而不是被继承来的。跟hasOwnProperty的功 能一样。

        语法:对象.hasOwnProperty()   ====   Object.hasOwn(对象, 属性)

12、is--用来判断两个数据是否相等,但是跟==和===都不一样,基本类型数据,判断数据看起 来是否相等,引用数据类型比较地址跟===一样 语法:Object.is(数据1, 数据2) // 返回布尔值
13、isExtensible--用于判断一个对象是否可扩展(是否可以给对象添加属性)。冻结对象、密 封对象不可以扩展。

        语法:Object.isExtensible(对象) - 判断一个对象是否可扩展的

14、isFrozen--用于判断一个对象是否被冻结。 语法:Object.freeze(对象) -- 冻结一个对象,让对象不可以设置/删除所有属性和原型

15、keys--获取对象中所有键组成的数组。

            语法:Object.keys(对象) - 将所有键放在一个数组中返回

16、preventExtensions--用于将一个对象变得不可扩展。

            语法:Object.preventExtensions(对象) - 让一个对象不可扩展(不可添加)

17、setPrototypeOf--用于给对象设置原型。

            语法:Object.setPrototypeOf(对象, 原型) -- 给对象设置原型

18、seal--封闭一个对象,让对象不能添加新属性、不能删除键值对 语法:Object.seal(要被封闭的对象) // 返回被封闭的对象
19、values--获取对象中所有值组成的数组。

        语法:Object.values(对象) - 将所有的值放在一个数组中返回


三、ES6的对象操作

  1. Symbol--专业用来做对象的属性,让对象可以拥有多个同名属性
  2. Reflect-- Reflect是将对象基本操作换成了函数写法,有了返回值,方便我们进行判断了

    a--访问属性的值用get方法,访问到就是具体的值,访问不到就是undefined
    Reflect.get(对象, 键) // 返回值或undefined
    b--设置属性用set方法
    Reflect.set(对象, 键, 值) // 给对象添加键值对,返回布尔值
    c--删除用deleteProperty方法
    Reflect.deleteProperty(对象, 键) // 删除对象键值对,返回布尔值

  3. Proxy-- 是一个构造函数,创建一个跟原对象一模一样的已经被监听的对象
    语法:var obj = {

                  name: '张三'
              }
    
              var pbj = new Proxy(obj, {
                  get(object, key) {
                  console.log(object, key);
                  return 111
              },
                  set(object, key, val) {
                      console.log(object, key, val);
                  }
              })
    
      pbj.name = '张三' // {name: '张三'} 'name' '张三'
    
      console.log( pbj.name ); // {name: '张三'} 'name'
    

嗯嗯
1 声望0 粉丝