内置对象的常用方法

原型对象、原型链
原型对象: prototype 只有函数才有prototype【函数的原型对象】
原型链: 每一个对象都有原型链 [[prototype]]、__proto__

在javascript中,所有的数组类型都是Object

构造函数

Object()
创建一个新的 Object 对象。该对象将会包裹(wrapper)传入的参数

    const o = new Object({name:'lzs',age:19})
    console.log(o);

静态方法

静态方法就是绑定在构造函数或者说是原型对象上的

1. Object.assign()

通过复制一个或多个对象来创建一个新的对象。
Object.assign(源数据,复制到的对象)

    const o1 = {username:'zs',age:14};
    const o2 = {username:'ls',salary:13000};
    const o3 = Object.assign(o1,o2); // 列在后面的会覆盖前面的属性
    console.log(o3); // {username:'ls',age:14,salary:130000}

2. Object.entries()

返回给定对象自身可枚举属性的 [key, value] 数组。

   let o = {name:'zs',age:14}
   console.log(Object.entries(o));[['name','zs'],['age',14]]

3. Object.freeze()

防止删除、修改、添加对象的属性

    const o1 = Object.freeze({username:'zs',age:'13'});
    // 修改
    o1.age = 14;
    console.log(o1);//username:'zs',age:'13'}
    // 删除
    delete o1.age
    console.log(o1);//username:'zs',age:'13'}
    // 添加
    o1.hobby=[123,123]
    console.log(o1);//username:'zs',age:'13'}

4. Object.seal()

防止删除、添加对象的属性,但可以修改对象的属性。

    const o1 = Object.seal({username:'zs',age:'13'});
    // 修改
    o1.age = 14;
    console.log(o1);//username:'zs',age:14}
    // 删除
    delete o1.age
    console.log(o1);//username:'zs',age:14}
    // 添加
    o1.hobby=[123,123]
    console.log(o1);//username:'zs',age:14}

5. Object.defineProperty()

直接在一个对象上定义一个新属性,或者修改一个已经存在的属性,这是框架中为对象添加可检查数据常用的方式 里面有get、set方法
Object.defineProperty(obj, prop, desc)

// writable
    Object.defineProperty(o,'name',{
    	value:'zs'
    })
    console.log(o); //{name:'zs'}
    o.name = 'ls'
    console.log(o); //{name:'zs'}
    
    Object.defineProperty(o,'name',{
	   value:'zs',
	   writable:true
    })
    console.log(o); //{name:'zs'}
    o.name = 'ls'
    console.log(o); //{name:'ls'}

// enumerable 是否可以被迭代,循环遍历
    Object.defineProperty(o,'name',{
    value:'zs',
    })
    console.log(Object.keys(o)); //[]
    
    Object.defineProperty(o,'name',{
      value:'zs',
      enumerable:true
    })
    console.log(Object.keys(o)); //['names']

// configurable 是否可以被删除

    Object.defineProperty(o,'name',{
    value:'zs',
    })
    delete o.name
    console.log(o); // {name:'zs'}

    Object.defineProperty(o,'name',{
    value:'zs',
    configurable:true
    })
    delete o.name
    console.log(o); // {}

6. Object.setPrototypeOf()、Object.getPrototypeOf()

设置|获取原型对象的方法

    let o = {};
    console.dir(o);// {},__proto__
    Object.setPrototypeOf(o,{username:'cc'});
    console.log(o);// {},{username:'cc'},__proto__
    console.log(Object.getPrototypeOf(o));// {username:'cc'},__proto__

7. Object.keys()


      let o = {name:'zs',age:14}
      console.log(Object.keys(o));['name','age']

实例方法

绑定在原型对象上的,所有实例化后的对象都有自己的对象的原型上的所有方法

1. Object.prototype.hasOwnProperty ()

判断本身是否具备这个属性 不包含原型上的

const o1 = {username:'zs',age:14}
console.log(o1.hasOwnProperty('username'));// true
console.log(o1.hasOwnProperty('hobby'));// false

Array

1.会改变原来数据的方法

push

给数组末尾添加一个元素

pop

弹出数组末尾元素

unshift

给数组头部添加一个元素

shift

弹出数组头部元素

reserve

反转数组

splice

nums.splice(起始位置,长度,【替换的元素】)

sort

数组排序()

2.不会改变原来数据的方法

join

数组转字符串
join(‘xx’) 用xx来链接数组

concat

arr1.concat[arr2]
数组连接,也可以使用es6的语法[…arr1,arr2]

slice(开始索引,结束索引)

返回的是一个数组,不会改变初始数据,

indexof

查找指定的数据,若是找到了返回对应的下标,没找到返回-1

3. 遍历

map
forEach
filter
some
every

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值