对象

作者: sugar_sugar_ya | 来源:发表于2020-02-21 22:01 被阅读0次

    创建单个对象的两种方法

    注意点:键值对之间用逗号隔开

    字面量方式

    栗子:

    var obj = {
        name: '天天开心',
        age: 24
    }
    

    构造函数方式

    栗子:

    var obj = new Object({
        name: '事事顺心',
        age: 24
    })
    

    取值和存值的两种方式

    点语法

    取值:对象名.属性名

    赋值:对象名.属性名="新值"

    栗子:

    var obj = {
        name: '嘿嘿',
        age: 24,
        hobby: 'codding'
    }
    console.log(obj.name);
    console.log(obj.age);
    console.log(obj.hobby);
    // 当属姓名不存在时,返回undefined
    console.log(obj.height); //undefined
    

    []语法

    取值:对象名'属性名'中必须是字符串

    赋值:对象名['属性名'] = "新值"

    栗子:

    var obj2 = {
        name: "嘿嘿",
        age: 24,
        hobby: '捏人'
    }
    console.log(obj2);
    
    // 对象名.属性名 = 对象名['属性名']
    console.log(obj2['name']); //嘿嘿
    console.log(obj2.name); //嘿嘿
    
    var name = "彭彭";
    console.log(obj2[name]); //undefined
    console.log(obj2[hh]); //hh is not defined
    
    var height = 'height';
    console.log(obj2[height]); //undefined
    console.log(obj2); //{name: "嘿嘿", age: 24, hobby: "捏人"}
    obj2[height] = 100;
    console.log(obj2); //{name: "嘿嘿", age: 24, hobby: "捏人", height: 100}
    

    批量创建对象的两种方法

    工厂函数

    作用:将创建对象的过程用函数封装,就是工厂函数

    工厂函数特点:返回的对象都是Object类型

    栗子:

    function creatPerson(name, age) {
        var obj = {
            name: name,
            age: age,
            sayHi: function() {
              console.log("大家好,我叫" + this.name);
            }
         }
         return obj;
     }
     var xm = creatPerson('小明', 18);
     console.log(xm);
    
     var xh = creatPerson('小红', 20);
     console.log(xh);
    

    自定义构造函数

    自定义构造函数特点:

    1. 先声明一个函数,首字母大写
    2. 结合new一起使用,创建出来的对象就有了类型

    构造函数作用:给创建出的新对象添加属性和方法

    new的作用:

    1. 创建一个对象,让对象有了类型
    2. 让构造函数的this指向新创建的对象
    3. 执行构造函数
    4. 返回这个新创建的对象

    栗子:

    function Dog(name, gender, age, hobby) {
        this.name = name,
        this.gender = gender,
        this.age = age,
        this.hobby = hobby,
        this.say = function() {
            console.log("你好");
        }
        this.eat = function () {
            console.log("我爱吃肉");
        }
    }
    var dog = new Dog("二哈", '男', 3, '玩球');
    console.log(typeof dog); //Dog
    console.log(dog);
    dog.say(); //你好
    

    浅拷贝

    Object.assign(target,source) 方法的第一个参数是目标对象,后面的参数都是源对象。(如果目标对象与源对象有同名属性,或多个源对象有同名属性,则后面的属性会覆盖前面的属性)。

    const target = { a: 1, b: 2 };
    const source = { b: 4, c: 5 };
    
    const returnedTarget = Object.assign(target, source);
    
    console.log(target); // { a: 1, b: 4, c: 5 }
    
    console.log(returnedTarget); // { a: 1, b: 4, c: 5 }
    
    • Object.assign()拷贝的是属性值。假如源对象的属性值是一个对象的引用,那么它也只指向那个引用

    展开运算符

    对象中的扩展运算符(...)用于取出参数对象中的所有可遍历属性,拷贝到当前对象之中

    let bar = { a: 1, b: 2 };
    let baz = { ...bar }; // { a: 1, b: 2 }
    

    相关文章

      网友评论

          本文标题:对象

          本文链接:https://www.haomeiwen.com/subject/silcqhtx.html