• 对象进阶。


     

    用工厂方法创建对象

    我们之前已经学习了如何创建一个对象,那我们要是想要创建多个对象又该怎么办?有的人可能觉得直接在写几个对象不就好了吗?比如下边的代码:

     

    var person1 = {

        name: "孙悟空",

        age: 18,

        sayName: function () {

            console.log(this.name);

        }

    };

     

    var person2 = {

        name: "猪八戒",

        age: 19,

        sayName: function () {

            console.log(this.name);

        }

    };

     

    var person3 = {

        name: "沙和尚",

        age: 20,

        sayName: function () {

            console.log(this.name);

        }

    };

    console.log(person1);

    console.log(person2);

    console.log(person3);

     

    的确,上述代码确实可以创建多个对象,但是,这样的解决方案真的好吗?对于少量对象可能使用,我们假设说,要用循环创建1000个对象,那你这种办法似乎就没用了,我们可以这么做,如下代码:

     

    // 使用工厂模式创建对象

    function createPerson() {

        // 创建新的对象

        var obj = new Object();

        // 设置对象属性

        obj.name = "孙悟空";

        obj.age = 18;

        // 设置对象方法

        obj.sayName = function () {

            console.log(this.name);

        };

        //返回新的对象

        return obj;

    }

     

    var person1 = createPerson();

    var person2 = createPerson();

    var person3 = createPerson();

     

    console.log(person1);

    console.log(person2);

    console.log(person3);

     

    上述代码看起来更加简洁,但是你会发现每一个人都是孙悟空,我们要是想要给每一个人不同的属性值,请参考:

     

    // 使用工厂模式创建对象

    function createPerson(name, age) {

        // 创建新的对象

        var obj = new Object();

        // 设置对象属性

        obj.name = name;

        obj.age = age;

        // 设置对象方法

        obj.sayName = function () {

            console.log(this.name);

        };

        //返回新的对象

        return obj;

    }

     

    var person1 = createPerson("孙悟空", 18);

    var person2 = createPerson("猪八戒", 19);

    var person3 = createPerson("沙和尚", 20);

     

    console.log(person1);

    console.log(person2);

    console.log(person3);

     

    现在再看上述代码,发现好像已经完美的解决了创建多个对象的难题,那我们是不是可以用循环批量创建1000个对象了呢?那我们就来试试:

     

    // 使用工厂模式创建对象

    function createPerson(name, age) {

        // 创建新的对象

        var obj = new Object();

        // 设置对象属性

        obj.name = name;

        obj.age = age;

        // 设置对象方法

        obj.sayName = function () {

            console.log(this.name);

        };

        //返回新的对象

        return obj;

    }

     

    for (var i = 1; i <= 1000; i++) {

        var person = createPerson("person" + i, 18);

        console.log(person);

     

    这样我们就实现了批量创建对象的功能,至于对象的名称和年龄,我们可以通过名称数组和年龄数组来获取。

     

  • 相关阅读:
    Mac M芯片上安装统信UOS 1070arm64虚拟机
    OFFER狂魔成长指南
    apache服务器出现No input file specified.解决方案
    vue.js样式绑定01
    【Node.js】数据库配置与操作、Session实现原理、JWT实现原理:
    Java开发面试--Redis专区
    【每日一题】实现 Trie (前缀树)
    Python大数据之PySpark(二)PySpark安装
    G1D6-Intriguing properties of neural networks&&&AttacKG&美亚2021
    SpringBoot日志文件
  • 原文地址:https://blog.csdn.net/m0_67176957/article/details/125910323