浅谈JavaScript中复合类型的声明以及操作

复合类型的声明以及操作

复合类型的种类

  • Object类 对象
  • Array类 数组
  • Function类 函数

复合类型的声明

  • Object类

    • var obj = new Object()
    • var obj = {}
  • Array类

    • var arr = new Array();
    • var arr = []
  • Function类

    • var fun = new Function()
    • function fun() {}

复合类型的增删改查

  • Object类

  • Array类

  • Function类

复合类型的字符串化与反字符串化

  • Object类
  • 字符串化

JSON.stringify()

  • 反字符串化

JSON.parse()

  • Array类
  • 字符串化
  1. .toString()/String()
  2. .toLocaleString()
  1. .join()
  • 反字符串化
  1. .split()
  • Function类
  • 字符串化

  • 反字符串化

    eval()

复合类型的遍历

  • Object类 例 var obj = { ‘name’: “yayaya”, ‘age’: ‘12’, ‘sex’: ‘female’ };

  • for in 遍历 (只遍历自身及原型链上的可枚举属性)

    for (var index in obj) {

    console.log(‘key=’, index, ‘value=’, obj[index])

    }

  • Object.keys() 方法

    返回一个包含对象自身所有可枚举属性的数组

    console.log(Object.keys(obj)); //[name, age, sex]

  • Objcet.getOwnPropertyNames() 方法

    返回一个包含对象自身所有可枚举和不可枚举属性的数组

    console.log(Object.getOwnPropertyNames(obj)); //[name, age, sex]

  • Array类 例 var arr = [1,2,3,4,5,6]

  • for循环遍历

    for(var i = 0; i < arr.length; i++) {

    console.log(arr[i]);

    }

  • for in 遍历 ( 遍历时,索引是字符串,不能进行运算,更适合遍历对象)

    for (var key in arr) {

    console.log(key);

    }

  • for of 遍历

    for(var key of arr) {

    console.log(key);

    }

  • forEach()

    arr.forEach(function (item, index, array) {

    console.log(item) // 1 2 3 4 5 6

    console.log(array) // [1, 2, 3, 4, 5, 6]

    })

  • map

    var newArr = arr.map(function (item, index) {

    return item * item

    })

    console.log(newArr) // [1, 4, 9, 16, 25, 36]

更多请点击此处

复合类型的深浅复制

深复制和浅复制最根本的区别在于是否是真正获取了一个对象的复制实体,而不是引用

浅复制

仅仅是指向被复制的内存地址,如果原地址中对象被改变了,那么浅复制出来的对象也会相应改变

  • Array类

    const cloneArray = originArray;

  • Object类

    const cloneObj = originObj;

深复制

在计算机中开辟了一块内存地址用于存放复制的对象

  1. 利用JSON对象中的parse和stringify
  2. 利用递归来实现每一层都重新创建对象并赋值

JavaScript中concat,slice,Object.assign(),… 展开运算符 都只是对数组的第一层进行深复制

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值