JavaScript:对象

对象

① Object.create(原型指向)
  • 用于创建对象,和 new Object() 的区别在于:该方法创建出来的对象的原型取决于传递的参数,而 new Object() 创建出来的对象永远指向 Object的 prototype

  • var obj1 = Object.create(null); // 创建一个纯净对象,不继承任何Object.prototype
    var obj2 = Object.create({name: 'zs'});
    console.log(obj1); // {}
    console.log(obj2.__proto__); // {name: "zs"}
    
② Object.entries()
  • 将传入的对象转换成对应的数组并将结果返回出来

  • var obj = {
        name: 'zs',
        age: 18,
        data: {
            code: 4,
            like: 'eat'
        }
    }
    var result = Object.entries(obj);
    console.log(result); // [["name", "zs"], ["age", 18], ["data", {code: 4, like: "eat"}]]
    
③ Object.getOwnPropertyNames()
  • 返回对象所有的属性组成的数组

  • var obj = {
        name: 'zs',
        age: 18,
        data: {
            code: 4,
            like: 'eat'
        }
    }
    var result = Object.getOwnPropertyNames(obj);
    console.log(result); // ["name", "age", "data"]
    
④ Object.getPrototypeOf()
  • 返回指定对象的原型

  • var obj1 = {};
    var obj2 = Object.create(null);
    var result1 = Object.getPrototypeOf(obj1);
    var result2 = Object.getPrototypeOf(obj2);
    console.log(result1); // {constructor: ƒ, __defineGetter__: ƒ, __defineSetter__: ƒ …}
    console.log(result2); // null
    
⑤ Object.preventExtensions()
  • 将指定对象设置为不可扩展,永远不能添加新属性,但是可以删除已有属性

  • var obj = {
        name: 'zs',
        age: 18
    }
    Object.preventExtensions(obj);
    obj.code = 4;
    obj.age = 20
    console.log(obj); // {name: "zs", age: 20}
    delete obj.age;
    console.log(obj); // {name: "zs"}
    
⑥ Object.isExtensible()
  • 用于判断一个对象是否可扩展,也就是是否可以添加新属性

  • var obj = {
        name: 'zs',
        age: 18
    }
    var result1 = Object.isExtensible(obj);
    Object.preventExtensions(obj);
    console.log(result1); // true
    var result2 = Object.isExtensible(obj);
    console.log(result2); // false
    
⑦ Object.freeze()
  • 冻结对象 使对象永远不变,不可修改不可删除

  • var obj = {
        name: 'zs',
        age: 18
    }
    Object.freeze(obj);
    obj.age = 20;
    console.log(obj); // {name: "zs", age: 18}
    
⑧ Object.isFrozen
  • 判断一个对象是否被冻结

  • var obj = {
        name: 'zs',
        age: 18
    }
    var result1 = Object.isFrozen(obj);
    console.log(result1); // false
    Object.freeze(obj);
    var result2 = Object.isFrozen(obj);
    console.log(result2); // true
    
⑨ Object.defineProperty(obj, prop, descriptor)
  • 用于向对象中修改或添加一个属性
  • 参数
    • obj : 要定义或者修改的对象
    • prop : 要添加或者修改的属性
    • descriptor : 描述符,是个对象,用于描述prop
      • value : 描述值
      • writable : 描述属性是否可以修改,为true可以修改,false不可修改,默认为false
      • enumerable : 描述属性是否可以被枚举,为true表示可以,默认为false
      • configurable : 描述属性是否可以被删除,为true表示可以,默认为false
      • get(){} : 当读取属性值的时候执行
      • set(){} : 当属性值发生改变时执行
      • 当使用了getter或setter方法,不允许使用writable和value这两个属性,可以和enumerable、configurable同时使用
      • get或set不是必须成对出现,任写其一就可以。如果不设置方法,则get和set的默认值为undefined
⑩ Object.defineProperties(obj, { prop1:descriptor1, prop2:descriptor2, … })
  • 用于向对象中修改或添加多个属性
⑩① Object.keys()
  • 遍历可枚举的属性(返回对象所有的key组成的数组)

  • var obj = {
        name: 'zs',
        age: 18,
        data: {
            code: 4,
            like: 'eat'
        }
    }
    var result = Object.keys(obj);
    console.log(result); // ["name", "age", "data"]
    
⑩② Object.values()
  • 遍历可枚举的属性值(返回对象所有的value组成的数组)

  • var obj = {
        name: 'zs',
        age: 18,
        data: {
            code: 4,
            like: 'eat'
        }
    }
    var result = Object.values(obj);
    console.log(result); // ["zs", 18, {code: 4, like: "eat"}]
    
⑩③ Object.assign(target, source1, source2, …)
  • 用于对象的合并
  • 参数
    • target : 目标对象(即:返回的合并后的对象)
    • source1: 源对象1
    • source2: 源对象2
⑩④ Object.hasOwnProperty()
  • 判断对象是否拥有某个属性

  • var obj = {
        name: 'zs',
        age: 18,
        data: {
            code: 4,
            like: 'eat'
        }
    }
    var result = obj.hasOwnProperty('age');
    console.log(result); // true
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值