工厂模式

使用单例模式的局限性,就是每次创建一个对象,里面的属性都会重复定义。

    var jsPerson1 = {
        name: 'zhangsan',
        age: 48,
        writeJs: function () {
            console.log('my name is ' + this.name + ', age is ' + this.age);
        }
    };
    jsPerson1.writeJs();

    var jsPerson2 = { /* 重复定义部分 */};

单例模式虽然解决了分组的作用,但是不能实现批量的生产,属于手工作业模式,这就引出了"工厂模式"
把实现同一件事情的相同的代码,放到一个函数中,以后如果再想实现这个功能,就不需要重新的编写这些代码了,只需要执行当前的函数即可 --> "函数的封装" --> "低耦合高内聚": 减少页面中的冗余代码,提高代码的重复利用率。

    function createJsPerson(name, age) {
        var obj = {};
        obj.name = name;
        obj.age = age;
        obj.writeJs = function () {
            console.log('my name is ' + this.name + ', age is ' + this.age);
        }
        return obj;
    }

    var p1 = createJsPerson('zhangsan', 48);
    p1.writeJs();
    var p2 = createJsPerson('lisi', 20);
    p2.writeJs();

JavaScript中不存在重载,如果方法名一样,后面的会把前面的覆盖,最后只保留一个。
JavaScript中有一个操作类似重载但不是重载: 可以根据传递参数的不一样,实现不同的功能。

    function sum(num) {
        if (typeof num === 'undefined') {
            return 0;
        }
        return num;
    }
    sum(100);
    sum();
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容