js基础知识(十)--对象的相关知识

一、对象
基本数据类型(不可变类型)
number,string boolean,null,underfined

对象(Object),对象就是js中的一种数据类型
基本数据类型都是一个一个独立的值,值与值之间不存在任何的联系,这样就导致无法在程序中来表示一些复杂的数据
对象相当于是一个容器(复合数据类型),在对象中可以存储不同类型的数据
对象中存储的数据被称为:属性,向对象中添加数据称为添加属性
向对象中添加属性:对象.属性名 = 属性值;
读取对象中的属性:对象.属性名,当我们访问一个对象中没有的属性时,不会报错而是返回underfined
删除属性:delete 对象.属性名

二、属性
属性名:对象的属性是任意值,不必须遵守标识符的规范,如果起的名字太特殊,必须采取另外的方式进行命名:对象[‘属性名’]=属性值,虽然如此,但是属性名尽量遵循标识符的规范
读取属性的第二种方式:对象[‘属性名’],这种方式读取属性更加灵活
属性值:对象的属性值可以是任意的数据类型

三、可变类型
/*
当一个变量的值被修改时,只会影响它自己,对其他变量不会产生任何影响
*/
console.log(‘a=’, a);
console.log(‘b=’, b);

    /*
    当我们对对象进行修改时(改对象),如果有其他的变量同时指向该对象,则也会被影响到
    */
    let obj = Object();
    obj.name = 'swk';
    let obj2 = obj;
    obj.name = 'zbj';
    console.log(obj);//zbj
    console.log(obj2);//zbj

    /*
    改变量对其他变量不会有影响
        变量=xxxx
        变量+=xxxx
        变量++
    改对象会影响到其他指向该对象的变量
        变量.属性=xxx
    */
    let obj3 = Object();
    obj.name = '白骨精';
    let obj4 = obj3;
    obj3 = null;//给obj3变量重新赋值,即为改变量
    console.log(obj3);//null
    console.log(obj4);//白骨精,不会有变化,因为obj3改变的是改变量,对其他变量不会有影响

    let obj5 = Object();//指向的是两个object
    obj.name = '蜘蛛精';
    let obj6 = Object();//指向的是两个object
    obj6.name = '蜘蛛精';
    obj5.name = '蝎子精';
    console.log(obj5);//蝎子精
    console.log(obj6);//蜘蛛精

比较两个对象时,无论是相等还是全等比较都是对象的内存地址

    let obj = Object();
    let obj2 = Object();
    obj.name = 'swk';
    obj2.name = 'swk';
    console.log(obj);
    console.log(obj2);
    console.log(obj == obj2);//false
    obj2 = obj;
    console.log(obj == obj2);//true

    // 声明常量是禁止修改变量,不会影响我们修改对象
    const obj3 = Object();
    obj3.name = '猪八戒';
    obj3.name = '孙悟空';
    console.log(obj3);//孙悟空

四、属性的枚举

    let obj = Object();
    obj.name = 'swk';
    obj.age = 18;
    obj.gender = '男';
    /*检查对象中是否含有某个属性
    in 运算符,用来检查对象中是否含有某个属性,有返回true,没有返回false
    语法:
    '属性名' in 对象
    */
    console.log('name' in obj);//true

    /*
    for-in 用来对对象中的属性进行枚举,就是将对象中属性全都取出来
    语法:
    for(let 变量in 对象){
        语句....
    }
    fot-in会执行多次,对象中有几个属性就会执行几次,每次执行都会将一个属性名赋值我们定义的变量
    */
    for (let n in obj) {
        console.log(n);//执行三次,因为有三个属性
        console.log(n, '=', obj[n]);//对象里的属性全都取出来了,通过obj[n]
    }

五、对象字面量
对象字面量,以字面量的形式来创建对象。可以使用{}来创建一个对象,使用typeof检查一个对象时,会返回’object’,字面量可以在创建对象中直接向对象中添加属性

    语法:
    {
        属性名:属性值,
        属性名:属性值,
        属性名:属性值
    }

    let obj = {
        name: 'swk',
        age: 18,
        gender: '男'
    };
    //可以进行对象的嵌套 
    let obj2 = {
        name: 'swk',
        brother: {
            name: 'zbj'
        }
    }
    console.log(obj2);

六、垃圾回收(垃圾收集 GC)
就像在生活中会产生垃圾一样,在程序运行一段时间后也会产生垃圾,程序中的垃圾会影响程序的运行速度,如果一个对象,没有任何的变量对其进行引用,那么这个对象就是垃圾对象,垃圾对象大量存在,会占用大量内存空间,导致程序速度变慢,必须要及时要将这些垃圾进行清理,但是这些垃圾对象我们不需要清理,因为在js中拥有自动的垃圾收集机制,它会将垃圾对象从内存中消除,我们要做的就是将不再使用的变量设置为null

  	let obj = {};
    let obj2 = {};
    let obj3 = {};
    obj3 = null;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值