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

  • Vue2

  • port

  • CSS

  • Node.js

  • JavaScript优化

  • uniapp

  • Mini Program

  • TypeScript

  • 面向对象编程

    • 简介

    • 理解对象

      • 对象类型
        • 对象类型
          • 创建对象
          • 对象组成
          • 引用对象
      • 属性操作
      • 对象属性描述符
      • 对象状态
    • 创建对象

  • UI组件

  • Plugin

  • Vue3

  • 性能优化

  • Axios

  • 状态管理

  • React

  • Mock

  • Icon

  • Template

  • 构建工具

  • 项目规范配置

  • Taro

  • SVG

  • React Native

  • 前端
  • 面向对象编程
  • 理解对象
HiuZing
2022-10-07
目录

对象类型

# 对象类型

JavaScript 的基本数据类型包括 Undefined、Null、Boolean、String、Number 和 Object,以及 ES6 新增的 Symbol 类型

对象是一种复合值,它可以将多个原始值或者其他对象聚合在一起,可通过键名访问这些值

# 创建对象

  • 对象字面量

    对象字面量是由若干键值对组成的映射表,键值对中间用冒号分隔,整个映射表用花括号括起来

    const uzi = {
      name : 'uzi',
      age : 22,
      5 : true
    }
    
    1
    2
    3
    4
    5
  • 构造函数

    使用 new 操作符调用 Object 构造函数来初始化一个新创建的对象

    let uzi = new Object();
    
    uzi.name = 'Uzi';
    uzi.age = 22;
    
    1
    2
    3
    4
    • 参数为对象

      • 参数为对象

        let foo = { a: 1 }
        
        let bar = new Object(foo)
        
        console.log(foo === bar)
        // true
        
        1
        2
        3
        4
        5
        6
      • 参数为函数(对象)

        let foo = function(){}
        
        let bar = new Object(foo)
        
        console.log(foo === bar)
        // true
        
        1
        2
        3
        4
        5
        6
    • 参数为原始类型

      如果参数是一个原始类型的值,则返回该值对应的包装对象

      console.log(new Object('foo'))
      // String {0: "f", 1: "o", 2: "o", length: 3, [[PrimitiveValue]]: "foo"}
      
      console.log(new Object(1))
      // Number {[[PrimitiveValue]]: 1}
      
      console.log(new Object(true))
      // Boolean {[[PrimitiveValue]]: true}
      
      1
      2
      3
      4
      5
      6
      7
      8
  • Object.create()

    用于创建指定对象为原型对象的新对象

    Object.create(proto, properties)
    
    1

    proto 新创建对象指向的原型对象 object

    const object = Object.create({ x:1, y:1 })
    // object 继承了属性 x 和 y
    
    console.log(object.x);
    // 1
    
    1
    2
    3
    4
    5

    properties 选参数。添加到新创建对象的可枚举属性(即自身定义的属性,而不是原型链上的枚举属性 object

    const obj = Object.create({ z:3 }, {
      x:{
        value:1,
        writable: false,
        enumerable:true,
        configurable:true
      },
      y:{
        value:2,
        writable: false,
        enumerable:true,
        configurable:true
      }
    })
    
    console.log(obj.x, obj.y, obj.z);
    // 1 2 3
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17

# 对象组成

对象是属性的无序集合,由 键名 和 属性值 组成

# 键名

对象的所有键名都是字符串,所以加不加引号都可以,如果不是字符串也会自动转换成字符串

# 属性值

属性值可以是任何类型的表达式,最终表达式的结果就是属性值的结果

如果属性值为函数,则通常把这个属性称为"方法"

const foo = {
  run: function (x) {
    return 2 * x;
  }
}

foo.run(1);
// 2
1
2
3
4
5
6
7
8

# 引用对象

如果不同的变量名指向同一个对象,那么它们都是这个对象的引用,也就是说指向同一个内存地址。修改其中一个变量,会影响到其他所有变量

let foo = {};
let bar = foo;

foo.a = 1;
console.log(bar.a);
// 1

bar.b = 2;
console.log(foo.b);
// 2
1
2
3
4
5
6
7
8
9
10

如果取消某一个变量对于原对象的引用,不会影响到另一个变量

let foo = {};
let bar = foo;

foo = 1;
console.log(bar);
// {}
1
2
3
4
5
6
上次更新: 2024/08/14, 04:14:33
简介
属性操作

← 简介 属性操作→

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