• 对象进阶。


     

    用工厂方法创建对象

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

     

    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);

     

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

     

  • 相关阅读:
    l8-d10 TCP协议是如何实现可靠传输的
    C语言 在一组名字中查找指定的人名是否存在
    Sante DICOM Viewer CD/DVD患者读取器
    NovelAi本地部署版详细教程
    vue中的数据依赖如何追踪收集
    人大金仓分析型数据库JSON函数和操作符
    VLC架构及流程分析
    Java面向对象编程
    CTF比赛必备常用工具
    典型跨时钟域(CDC)信号处理
  • 原文地址:https://blog.csdn.net/m0_67176957/article/details/125910323