• JavaScript连载18-工厂模式创建对象、自定义构造函数


    一、工厂模式创建对象

    1. 常见创建对象方式

    (1)对象字面量

        var x1 = {
    
            "name":"小猴",
    
            age:22,
    
            sex:"女",
    
            dolt:function () {
    
                console.log("我是IT的小学生");
    
            }
    
    }

    (2)new Object()创建对象

        var x2 = new Object();
    
        console.log(typeof x2);
    
        x2.name = "好吧";
    
        x2.age = 79;
    
        x2.sex = "男";
    
        //这种方式创建的对象更具有规范性,节约内存
    
    //缺点就是不能够量产

    (3)通过工厂函数来创建对象

        function createPerson(name,age,sex){
    
            var p = new Object();
    
            p.name = name;
    
            p.age = age;
    
            p.sex = sex;
    
            p.dolt = function () {
    
                console.log("我会写代码");
    
            }
    
            return p;
    
        }
    
    ​
    
        var x3 = createPerson("小廖",12,"男");
    
        var x4 = createPerson("撒b",23,"女");
    
    ​
    
        console.log(typeof x3);
    
    console.log(typeof x4);

    上面的三段代码运行结果如下:

    二、自定义构造函数

        function Person(name,age,sex) {
    
            this.name = name;
    
            this.age = age;
    
            this.sex = sex;
    
            this.dolt = function () {
    
                console.log("我是专家");
    
               
    
            }
    
        }
    
        function Dog() {
    
           
    
        }
    
        var d1 = new Person("xiaoming",23,"男");
    
        console.log(typeof d1);

    三、new的由来

    1.属性:如果一个变量属于一个对象所有,那么该变量就可以称之该对象的一个属性,属性一般是名词,用于描述事物的特征。

    2.​方法:如果一个函数属于一个对象所有,那么该函数就可以称之该对象的一个方法,方法是动词,描述事物的行为和功能。

    3.new关键字一般是和构造函数一起使用的;构造函数是一种特殊函数,构造函数用于创建一类对象,首字母要大写,构造函数要和new一起使用​才有意义。

    ​new做了什么?

    (1)new先在内存中​创建一个新的空对象;(2)new会让this指向这个​新的对象;(3)执行构造函数,给这个​新对象属性和方法;(4)返回这个新对象​;

    四、源码:

    D18_1_FactoryPattern.html

    地址:

    https://github.com/ruigege66/JavaScript/blob/master/D18_1_FactoryPattern.html​

    2.CSDN:https://blog.csdn.net/weixin_44630050

    3.博客园:https://www.cnblogs.com/ruigege0000/

    4.欢迎关注微信公众号:傅里叶变换,个人账号,仅用于技术交流,后台回复“礼包”获取Java大数据学习视频礼包

     

  • 相关阅读:
    分库分表就能无限扩容吗?
    每天数十亿次请求的应用经验分享,值得参考!
    QPS、TPS、并发用户数、吞吐量
    Django优雅集成MongoDB
    Linux apt-get
    Python Tenacity 实现"重试机制"
    Kubernetes 系列(一):Kubernetes 介绍、架构、安装
    MongoDB学习笔记:文档Crud Shell
    ubuntu下快速安装rabbitmq
    Reactor模型详解:单Reactor多线程与主从Reactor多线程
  • 原文地址:https://www.cnblogs.com/ruigege0000/p/13167194.html
Copyright © 2020-2023  润新知