• 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

  • 相关阅读:
    Matlab图像处理-神经网络分类法
    搭建公司内部论坛 只需简单三步 1 (安装Discuz)
    无CUDA支持的dlib库的安装与使用
    [machine learning]误差分析,模型分析
    docker安装以及部署
    Java核心类库之集合框架
    目标检测算法yolo的python实现
    法线贴图Shader
    一文梳理Vue面试题
    B/S网络架构概述
  • 原文地址:https://blog.csdn.net/weixin_47295886/article/details/127414363