对象

140 阅读3分钟

一、对象

1、什么是对象

    一个复杂(引用)数据的集合。        复杂数据类型:object , function ,array
语法:var obj = {
    //内部存放键值对(key/value)
    name : 'CMF',    键值对之间需要逗号间隔
    age : 123456
}

{}对象内部存储的数据(内部数据大部分为基本数据类型,)

2、创建对象

*    1、字面量的形式
        var obj = {
            name : 'CMF',
            age : 168
        }

*    2、通过内置构造函数
        var obj = new object() //此时为空对象

3、对象对key的要求:

    *1、推荐使用,符号变量命名规则和规范
    *2、可以使用数字开头作为key
    *3、可以使用特殊字符(@,#)作为key    '@' : '特殊符号'

4、对象的操作(增删改查)

   * 1、点语法
        *查(对象.key)     例:object.name
        *改(对象.key = '修改后的值')  例:object.name = 'CMF'
        *增(对象.key = '添加后的值')  例:object.age = 5655555
        *删(delete object.name)      例:delete.name
   * 2、中括号(数组)写法
        *查(对象['key'])             例:object['name']
        *改(对象['key'] = 'CMF')     例:object['name'] = 'cccc'
        *增(对象['新key'] = '新值')   例:object['age'] = 88888
        *删(delete object['name'])    
    *3、两种操作方式的区别
        *对象命名符合规范时两种操作方式都可以使用。
        *出现纯数字、特殊符号时不能用点语法,中括号可以使用,但是必须要加''.
        *当出现变量的时候,想要用变量作为key,必须要用中括号语法。
            因为点语法会将key解析成字符串类型,中括号法会将key = ‘name’解析成值

                var obj = {
                    name : 'CMF',
                    age : 456123 ,
                    '@' : 'hhhhh'
                }
                console.log(obj)

                console.log(obj.name)
                console.log(obj['name'])

                // console.log(obj.'@')
                console.log(obj['@'])
                var key = 'name'
                console.log(obj.key)        //解析出来为undefind
                console.log(obj[key])       //解析出来输出为name

5、遍历对象 拿到对象的所有键值对

* for...in循环

    var object = {
        name : 'CMF',
        age : 11111
    }
    forvar key in object){
        console.log(key)        //拿到对象的全部key
    }
    console.log(key.object)     //将object解析为字符串
    console.log(key,object[key])//正常解析

二、数组

1、创建数组

*1、字面量      var arr = [5]        就是一个值为5的数组
*2、内置构造函数    var arr1 = new Array(5) 创建一个有长度的数组

2、length:代表数组成成员变量

*console.log(arr.length)     获取数组长度    length
数组的索引值(下标):当前数据在数组的第几个位置(从0开始的)
获取数组中的成员:console.log(arr[0])

3、遍历数组:拿到数组的每一个成员

    //2、计算数组中最大值
    var b = 0
    var arr1= [1,2,3,4,5,6,7,8,9,10]
    // for(var i = 0; i < arr1.length; i++){   //遍历所有数组的下标
    //     if(b <= i){                         //比较大小
    //         b = arr1[i]                     //将大的那个数组值赋给b
    //     }
    // }
    // console.log(b)

    for(var m = 0; m < arr1.length; m++){
        if(b < arr1[m]){
            b = m
        }
    }
    console.log(b)

4、数据类型之间的区别

    *1、基本数据类型(numberstringundefinedtruefalse)
    *2、复杂数据类型(functionObject、array)

4.1、存储的区别

*内存分为:栈内存和堆内存
    栈内存:数据有序从底部开始排列,(先入后出)
    堆内存:数据无序排列,会随机生成一个空间名(地址)
*
*
    1、基本数据类型:存储在栈内存中,变量内部就是实际的值。
    2、引用数据类型:存储在在内存中,变量内部存储的是堆内存中的地址。
*

4.2、赋值的区别

*
    1、基本数据类型:再赋值过程中是值的传递,将自身复制一份给另一个变量,后续修改另一个值不影响自身的值。
    2、引用数据类型:在赋值过程中,是地址的传递,修改另一个变量会相互影响。
*

4.3、比较的区别:

*
    1、基本数据类型:在做比较的过程中,是将值作比较。
    2、引用数据类型:在做比较的过程中,是将地址作比较,判断是不是执行同一个地址。
*

4.4、传参的区别:

*
    1、基本数据类型:是值的传递,将值传递给形参。
    2、引用数据类型:是地址的传递,将地址传递给函数形参。