• 【JavaScript】JS对象-属性的遍历,删除对象属性


    JS对象的定义有两种方法,对象的属性使用键值对赋值(let和var都是用作定义变量,有一定的区别,越来越多的公司开始禁止使用var,因为var的是函数作用域,会出现很多意想不到的bug):

    let 对象名 = new Object();
     let 对象名 = {}  // 推荐使用

    示例:

        let teacher = {
            name:'苍老师',
            age:18,
            height:155,
            weight:90,
            print:function(){
                console.log(this.name);
                
            },
            boyFriends:['张三','李四'],
            husband:{
                name : '张三',
                age : 60,
            },
        };

    上面的属性中没有sanwei,这个属性。如果想要添加一个属性叫sanwei该怎么办呐。

    直接赋值就行了!如:

        teacher.sanwei = 90;
        console.log(teacher.sanwei);

    可以直接添加一个sanwei属性,同时直接赋值90给teacher.sanwei。

    如何删除一个属性呢?delete teacher.sanwei或者delete teacher['sanwei']

    如何遍历teacher这个对象中的属性呢?使用for in

    如:

        for (let key in teacher){
            console.log(key);
        }
        console.log('----------');
        for(let key in teacher){
            console.log(key+':'+teacher[key]);
        }
        console.log('--------');

    在teacher这个对象中,定义了一个print方法,使用了this指针

    如果再定义一个对象

    如:

        let teacher1 = {
            name:'袁老师',
            age : 18,
        };

    并赋值一下:

        teacher1.print = teacher.print; // this指向当前对象,指向teacher1
        teacher1.print();

    teacher1调用print方法打印的就是当前对象的属性了。


    如果使用一个变量来存放呢?例如:

        let print = teacher.print;

    运行之后,不会打印出任何东西。

    因为默认的对象是window对象,window对象没有name这个属性

    如果添加一个

    window.name = '调用了窗口对象';
    就会正常输出name了。
  • 相关阅读:
    关于博客
    latex句首缩进空格
    javable 之Iterable
    javable之Comparable
    常量池与Integer和String的“==”
    静态多态与动态多态
    String和StringBuilder效率不同的原理
    equals和hashcode
    Eclipse里面使用checkstyle(Google style)
    矩阵链乘问题
  • 原文地址:https://www.cnblogs.com/to-red/p/11146408.html
Copyright © 2020-2023  润新知