对象

1. 什么是对象:
- 其实就是一种事物的描述,在程序中对象是一种数据类型
- 程序中的对象主要用来:存储信息
2.js的对象的分类
    - 内置对象:
        - ES提供可以直接被使用的对象,已经是一个具体的实例了,不需要创建
        - Math对象,数学对象
    - 本地对象:
        - 其实只是ES提供的一种类方法,需要被实例化之后,才能使用
        - 需要被new执行之后,才能使用
        - String,Object,Array,Number,Boolean,RegExp,Date
    - 宿主对象:
        - 由浏览器或W3C提供的运行ES的环境,所带的对象
            - BOM:window,DOM:document
        - 所有的自定义对象
            - 天天都在学
    - 注:实例化:转化成实际的案例
补充关键字:delete,用来删除自定义对象的属性
    - delete
        - `delete 对象.属性名`;
    - 只能删除自定义对象的属性,且一次只能删一个属性
3. 创建对象:
①字面量:
    ```js
    var o1 = {}
    ```
② 构造函数:
    ```js
    var o2 = new Object();
    ```
 4. 对象的意义和本质
①意义(功能)
    - 存储数据(信息)
    - 编程(面向对象编程)
②本质
    - 键值对
5. 对象的操作
①点语法(.)
    - 对象.属性名
注:只能访问固定的属性名,不能使用变量作为属性名
console.log(obj.name);
②中括号语法:[]
    // 属性名为变量时,属性名为不确定的值时
    var attr = "name";
    console.log(obj[attr]);
    // 属性名为具体的值,不是变量时,也可以用[]语法,但是这个值必须用引号包裹
    console.log(obj["name"]);
③数组的遍历:
//for-in不是循环,是一个遍历语句,遍历对象
//枚举对象所有的属性,根据枚举出的属性,获取属性值
   for(var i in obj){
         console.log(i);
         console.log(obj[i]);
     }
- 注意:任何两个对象都不相等
             如果相等了,意味着就是一个对象
补充:对象的补充-栈堆
- 内存
    - 用来运行数据的空间,内部又区分了不同的存储方式(栈和堆)
        - 栈:一般用来存储变量名和地址,空间小,稳定,不可修改
        - 堆:一般用来存储数据,空间大,可被修改
        - 关系:一一对应,多对一,不能一对多
        - 存取规则:
            - 栈:先进后出:杯子
            - 堆:先进先出:掉底的杯子
- 数据类型的分类
    - 基本类型(值传递)
        - 数据就在栈中
        - 不存在深浅拷贝,默认就是深拷贝
    - 引用类型(引用传递的数据)
        - 栈中只保存了一个地址,地址指向堆中的某个数据
        - 存在深浅拷贝,默认是浅拷贝
            - 目前会有一些影响
        - 如何实现深拷贝?
            - for-in遍历属性
 
原文地址:https://www.cnblogs.com/yh-3175339026/p/12796492.html