• js--解决工厂创建对象的缺点---使用构造函数


    使用工厂方法创建对象,使用的构造函数都是Object,所以创建的对象都是Object这个类型,导致无法区分多种类型的对象

    希望把new Object();改成=>new Person();,new newClass();


    创建一个构造函数,专门用来创建person对象的,构造函数就是一个普通的函数,创建方式和普通函数没有区别,不同的是构造函数习惯上大写。

    构造函数和普通函数的区别:调用方式不同 

    普通函数之间调用,构造函数需要使用new关键字来调用

                function Person(){
                    
                }        
                var a=Person();//作为普通函数

            console.log(a);

                 function Person(){
                    
                }        
                var a= new Person()//作为构造函数
                console.log(a);

     构造函数执行流程:

    1.         立即创建一个新的对象
    2.         将新建的对象设置为函数中的this,this指向新建的对象
    3.         逐行执行函数中的代码
    4.         将新建的对象作为函数的返回值返回

                function Person(){
                    this.age=23;
                    this.name='张三';
                }        
                var a= new Person()//作为构造函数
                console.log(a.name);
                

    1. function Person(){
    2. this.age=23;
    3. this.name='张三';
    4. }
    5. var a= new Person()//作为构造函数
    6. console.log(a.name);

    使用同一个构造函数创建的对象=>同一类

    同一个构造函数创建的对象教=》该类的实例 ab是person的实例 

    1. function Person(name, age, gender) {
    2. this.age = age;
    3. this.name = name;
    4. this.gender = gender;
    5. this.sayName = function() {
    6. console.log(this.age)
    7. };
    8. }
    9. var a = new Person("张三", 34, "颠倒");//作为构造函数
    10. var b = new Person("李四", 34, "颠倒");
    11. function Dog() {
    12. }
    13. var c = new Dog();
    14. console.log(c)
    15. console.log(a);

    使用instance of检查一个对象是否是一个类的实例

    语法:对像 instanceof 实例

                    console.log(a instanceof Person)
                console.log(c instanceof Dog);

                    console.log(a instanceof Object)
                console.log(c instanceof Object);

     注意所有的对象都是Object的后代,所以任何对象的和instanceof检查时候都会返回true

  • 相关阅读:
    安装数据库中间件——Mycat
    25.K-均值算法的介绍及实现过程
    bean属性注入方式及AOP的概述
    iSCSI:提供基于 iSCSI 的网络存储(服务端以及启动器配置)
    Win 编程获取空闲时间、锁屏、重启、关机、休眠
    ES6中数组新增的方法-超级好用
    基于springboot实现乒乓球预约管理系统项目【项目源码】计算机毕业设计
    C2基础设施威胁情报对抗策略
    【前端面试题5】
    外包干了3个月,技术退步明显。。。。。
  • 原文地址:https://blog.csdn.net/weixin_47295886/article/details/127414363