Iwen's blog Iwen's blog
首页
  • 前端文章

    • JavaScript
    • Vue
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • 小程序笔记
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • Linux
  • 学习
  • 面试
  • 心情杂货
  • 友情链接
  • 网站
  • 资源
  • Vue资源
  • 分类
  • 标签
  • 归档
复盘
关于

Iwen

不摸鱼的哥哥
首页
  • 前端文章

    • JavaScript
    • Vue
  • 学习笔记

    • 《JavaScript教程》笔记
    • 《JavaScript高级程序设计》笔记
    • 《ES6 教程》笔记
    • 《Vue》笔记
    • 《TypeScript 从零实现 axios》
    • 小程序笔记
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • Linux
  • 学习
  • 面试
  • 心情杂货
  • 友情链接
  • 网站
  • 资源
  • Vue资源
  • 分类
  • 标签
  • 归档
复盘
关于
  • Vue

  • Vue进阶

  • CSS

  • ES6

  • Base

  • Core

  • Array

  • Object

    • 浅拷贝与深拷贝
    • 方法总结
      • 方法汇总
      • 合并两个对象
        • Object.assign()
        • 遍历合并
      • freeze()
    • 可枚举、不可枚举的属性
    • defineProperty
    • proxy
  • String

  • Async

  • Browser

  • Http

  • 性能优化

  • 正则

  • 经典总结

  • 设计模式

  • 数据结构

  • 算法

  • 手写

  • TypeScript

  • 复盘
  • Object
Mr.w
2020-11-29

方法总结

# 方法总结

# 方法汇总

// json对象和json字符串之间的转换
JSON.parse(str)
JSON.stringify(obj)

// 获取对象长度
Object.keys(obj).length;
Object.values(obj).length;

// 获取对象key值
Object.keys(obj);                   // 可枚举属性
Object.getOwnPropertyNames(obj);    // 包括不可枚举属性

let keys =[];
for(key in one) {
    keys.push(key)); 
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

# 合并两个对象

# Object.assign()

Object.assign(target, ...sources)

Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。

let one = { name: 'Libai', address: 'Shenzhen'};
let two = { hobby: 'Quiet', yearn : 'Freedom' };

let newObj = Object.assign({}, one, two);

console.log(newObj)   //{name: "Libai", address: "Shenzhen", hobby: "piano", yearn: "freedom"}
console.log(one)      // {name: 'Libai', address: 'Shenzhen'}
1
2
3
4
5
6
7

# 遍历合并

for (var key in two) {
    if (two.hasOwnProperty(key) === true) {
        one[key] = two[key];
    }
}
1
2
3
4
5

# freeze()

Object.freeze()方法可以冻结一个对象。一个被冻结的对象再也不能被修改;冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,不能修改该对象已有属性的可枚举性、可配置性、可写性,以及不能修改已有属性的值。此外,冻结一个对象后该对象的原型也不能被修改。freeze()返回和传入的参数相同的对象。

const obj = {
    a: 2,
    b: {
        c: 3
    }
}
Object.freeze(obj);

obj.a = 34;
// Throws an error in strict mode

console.log(obj.a); // 2
1
2
3
4
5
6
7
8
9
10
11
12

对象里面的属性值,如果是对象,则可以修改属性值里面的属性,因为指向的不是同一个内存地址,需要再次冻结

obj.b.c = 31;
console.log(obj.b.c)    // 31
Object.freeze(obj.b);   // ok
1
2
3
浅拷贝与深拷贝
可枚举、不可枚举的属性

← 浅拷贝与深拷贝 可枚举、不可枚举的属性→

最近更新
01
flex布局页面自适应滚动条问题
12-28
02
前后端分离开发请求接口跨域如何携带cookie的问题
12-28
03
怎么实现div长宽比固定width-height4比3
12-28
更多文章>
Theme by Vdoing | Copyright © 2017-2022 Iwen | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式