Blog
首页
文档
收藏
关于
  • 在线转换时间戳 (opens new window)
  • 在线压缩图片 (opens new window)
  • Float-Double转二进制 (opens new window)
  • 文件转Hex字符串 (opens new window)

HiuZing

🍑
首页
文档
收藏
关于
  • 在线转换时间戳 (opens new window)
  • 在线压缩图片 (opens new window)
  • Float-Double转二进制 (opens new window)
  • 文件转Hex字符串 (opens new window)
  • 前端面试题

  • JavaScript

    • JavaScript语法

    • JavaScipt对象

      • JavaScript-Date对象
      • JavaScript-Set对象
      • JavaScript-Object对象
        • JavaScript-Map对象
        • JavaScript-Array对象
        • JavaScript-String对象
        • JavaScript-prototype对象
        • JavaScript-RegExp对象
        • JavaScript-Number对象
        • JavaScript-全局属性
      • JavaScript实例

      • JavaScript浏览器BOM

      • JavaScript DOM

    • Vue2

    • port

    • CSS

    • Node.js

    • JavaScript优化

    • uniapp

    • Mini Program

    • TypeScript

    • 面向对象编程

    • UI组件

    • Plugin

    • Vue3

    • 性能优化

    • Axios

    • 状态管理

    • React

    • Mock

    • Icon

    • Template

    • 构建工具

    • 项目规范配置

    • Taro

    • SVG

    • React Native

    • 前端
    • JavaScript
    • JavaScipt对象
    HiuZing
    2022-10-08
    目录

    JavaScript-Object对象

    # 属性的简洁表示法

    ES6允许对象的属性直接写变量,这时候属性名是变量名,属性值是变量值

    const age = 12;
    const name = "Amy";
    const person = {age, name};
    person   //{age: 12, name: "Amy"}
    //等同于
    const person = {age: age, name: name}
    
    1
    2
    3
    4
    5
    6

    # 方法名也可以简写

    const person = {
      sayHi(){
        console.log("Hi");
      }
    }
    person.sayHi();  //"Hi"
    //等同于
    const person = {
      sayHi:function(){
        console.log("Hi");
      }
    }
    person.sayHi();//"Hi"
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

    如果是Generator 函数,则要在前面加一个星号

    const obj = {
      * myGenerator() {
        yield 'hello world';
      }
    };
    //等同于
    const obj = {
      myGenerator: function* () {
        yield 'hello world';
      }
    };
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    # 对象的新方法

    # Object.assign(target, source_1, ···)

    用于将源对象的所有可枚举属性复制到目标对象中。

    let target = {a: 1};
    let object2 = {b: 2};
    let object3 = {c: 3};
    Object.assign(target,object2,object3);  
    
    // 第一个参数是目标对象,后面的参数是源对象
    target;  // {a: 1, b: 2, c: 3}
    
    1
    2
    3
    4
    5
    6
    7
    1. 浅拷贝

      Object.assign()方法实行的是浅拷贝,而不是深拷贝。

      const obj1 = {a: {b: 1}};
      const obj2 = Object.assign({}, obj1);
      
      obj1.a.b = 2;
      obj2.a.b // 2
      
      1
      2
      3
      4
      5

      源对象obj1的a属性的值是一个对象,Object.assign()拷贝得到的是这个对象的引用。这个对象的任何变化,都会反映到目标对象上面。

    2. 同名属性的替换

      对于这种嵌套的对象,一旦遇到同名属性,Object.assign()的处理方法是替换,而不是添加。

      const target = { a: { b: 'c', d: 'e' } }
      const source = { a: { b: 'hello' } }
      Object.assign(target, source)
      // { a: { b: 'hello' } }
      
      1
      2
      3
      4
    3. 数组的处理

      Object.assign()可以用来处理数组,但是会把数组视为对象。

      Object.assign([1, 2, 3], [4, 5])
      // [4, 5, 3]
      
      1
      2
    4. 取值函数的处理

      Object.assign()只能进行值的复制,如果要复制的值是一个取值函数,那么将求值后再复制。

      const source = {
        get foo() { return 1 }
      };
      const target = {};
      
      Object.assign(target, source)
      // { foo: 1 }
      
      1
      2
      3
      4
      5
      6
      7

    # Object.is(value1, value2)

    用来比较两个值是否严格相等,与(===)基本类似

    Object.is("q","q");      // true
    Object.is(1,1);          // true
    Object.is([1],[1]);      // false
    Object.is({q:1},{q:1});  // false
    
    1
    2
    3
    4

    # Object.setPrototypeOf

    设置原型对象

    const school = {
        name:'hhh'
    }
    const cities = {
        xiaoqu:['1','2','3']
    }
    Object.setPrototypeOf(school,cities)
    console.log(school) // school的原型上有cities
    
    // 不推荐这样做 推荐:在创建对象的时候 设置好原型对象
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    Object.keys 获取对象所有键

    Object.value获取对象所有值

    Object.entries返回一个给定对象自身可遍历属性[key,value]的数组

    const school = {
        name:'hhh'
    }
    const m = new Map(Object.entries(school))
    console.log(m.get('name')) // hhh
    
    1
    2
    3
    4
    5

    Object.getOwnPrototypeDescriptors() 返回属性的描述对象

    上次更新: 2024/08/14, 04:14:33
    JavaScript-Set对象
    JavaScript-Map对象

    ← JavaScript-Set对象 JavaScript-Map对象→

    最近更新
    01
    React Native 使用SVG
    08-13
    02
    Docker基础命令
    08-04
    03
    算数逻辑单元
    07-30
    更多文章>
    Theme by Vdoing | Copyright © 2021-2024 WeiXiaojing | 友情链接
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式