js中关于对象的那些事

1 篇文章 0 订阅

对象的使用

<1> 对象的是定义

一: 字面量

var obj={}

二: 构造函数定义

var obj=new Object({})

<2> 对象的使用 :

(1) 点语法使用 => obj.key 

(2) 中括号使用 => obj['key']
var obj={
    a:1,
    b:'1',
    c: true,
    d:function(){
        
    },
    e:[1,2,3],
    f:{
        h:1
    }
}

//获取值 查(里面的值)

obj.a === obj['a']
obj.f.h === obj['f']['h']

//增 新增一个不存在的键
obj.key='2' === obj['key']='2'

//删 delete obj['key']或者 delete obj.key

delete obj.a === delete obj['a']

 //该 obj['key']=新值 或者 obj.key=新值
 obj.b=新值 === obj['b']=新值

<3>特性: 引用类型(赋值时不会复制内容而是把内存地址赋值给变量,一处更改,所有使用的地方都会改变)

var a={ test:1}
var b=a
b.test=2
console.log(a.test) //2

<4>高级用法

(1)遍历 for in || for of(对对象结构特性有要求)

(1)obj.hasOwnProperty(key) //判断key是不是obj自己的属性,非原型上的属性

for (const key in object) { //没有兼容性问题
  if (object.hasOwnProperty(key)) {
    const element = object[key];
    
  }
}

for (const iterator of object) { //普通对象不可用,对象必须具有迭代特性,类似于数组 ,该方法一般只用作对数组的遍历
 
}

//el:
var obj = {
      a: 1,
      b: '1',
      c: true,
      d: function () {

      },
      e: [1, 2, 3],
      f: {
        a: 1
      }
    }
    
for (const key in obj) { //默认 for in会把对象本身属性和方法包括原型对象上属性和方法的都遍历出来
  if (obj.hasOwnProperty(key)) { //只打印对象本身属性,不打印原型上的属性
    console.log('key',key,'val',obj[key])
  }
}
//  key a val 1
//  key b val 1
//  key c val true
//  key d val ƒ (){

//      }
//  key e val (3) [1, 2, 3]
//  key f val {a: 1}

const obj = { length: 3, 0: 'foo', 1: 'bar', 2: 'baz' };
 
const array = Array.from(obj);
for (const value of array) { 
    console.log(value);
}
//foo
//bar
//baz

(2)

JSON.stringify(obj) //把对象转化成json字符串

JSON.parse(obj的json字符串) //把json格式字符串还原回对象

var obj2={
  a:1,
  b:{
    c:2
  }
}
var strObj=JSON.stringify(obj2)
console.log(strObj);

// {"a":1,"b":{"c":2}}

var obj=JSON.parse(strObj)
console.log(obj);

//{
// a:1,
// b:{
//  c:2
// }
//}


拓展:对象深度克隆方法

var cloneObj=JSON.psrse(JSON.stringify(要克隆的对象))

(3) es6

var newObj=Object.assign({},obj1,obj2,...) //对象的合并 浅克隆

合并原则: 从右至左,相同的键,发生值覆盖,不同的键,发生值添加,最后把合并好的结果return回去

var obj={
  a:1,
  b:{
    c:2
  }
}
var obj2={
  a:2,
  e:33
}
var newObj=Object.assign({},obj,obj2)
console.log(newObj);
// {a: 2, b: {…}, e: 33}

(4)

Object.keys(obj) //把obj中所有的键提取出来放到一个数组中

Object.keys(obj2)
//(2) ["a", "e"]

Object.values(obj) //把obj中所有的键对应的值提取出来放到一个数组中

Object.values(obj2)
//(2) [2, 33]

Object.entries(obj) //把obj中所有的键值对的提取成一个数组再放到一个数组中,

Object.entries(obj)
// [ ["a", 2], ["e", 33] ]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值