美文网首页
javascript学习笔记--构造函数

javascript学习笔记--构造函数

作者: 持续5年输出bug | 来源:发表于2018-10-08 22:44 被阅读0次

    this 的情况
    以函数形式调用,指window
    以方法形式调用,谁调用方法this就是谁
    以构造函数形式调用,指新建的那个对象

    普通函数:

       function person(){
       
        }
        var per =person();
        console.log(per)
      //控制台打印结构为undefined
    

    构造函数:

        function Person(){
       
        }
        var per = new Person();
        console.log(per)
    

    结果如下图:


    image.png

    1.构造函数就是一个普通函数,和普通函数的创建方法一致;
    2.构造函数的函数名采用首字母大写;
    3.构造函数的调用方法与普通函数不同,需要用new关键字;
    4.使用构造函数创建的都是Object

    例如:

        function Person(){
            this.name="tom";
            this.age=18;
        }
        var per = new Person();
        console.log(per);
       console.log(per.name);
    

    控制台打印结果如图:

    image.png

    从打印结果可以看出 this 指的就是新建的对象

    构造函数执行的流程:
    1.立刻创建一个新对象
    2.将新建的对象设置为函数中的this,在函数中,可以用thi来引用新建的对象
    3.逐行执行函数中的代码
    4.新建的对象作为返回值返回

    改造构造函数

        function Person(name,age,sex){
            this.name=name;
            this.age=age;
            this.sex=sex;
        }
        var per1 = new Person("tom",18,"man");
        var per2 = new Person("marry",17,"man");
        console.log(per1);
        console.log(per2);
    
    image.png

    instanceof 检查一个对象是否是这个构造函数的实例:
    语法:
    对象 instanceof 构造函数

    在代码 var per1 = new Person("tom",18,"man"); 就说per1 是构造函数Person的实例

    例如:

      function Person(name,age,sex){
            this.name=name;
            this.age=age;
            this.sex=sex;
        }
        function Dog(name,age,sex){
            this.name=name;
            this.age=age;
            this.sex=sex;
        }
        var per1 = new Person("tom",18,"man");
        var per2 = new Person("marry",17,"man");
        var per3 = new Dog("旺财",1,"man");
        var per4 = new Dog("二哈",3,"man");
        console.log(per1 instanceof Person);//tu re
        console.log(per3 instanceof Person);//false
    

    控制台打印结果:


    相关文章

      网友评论

          本文标题:javascript学习笔记--构造函数

          本文链接:https://www.haomeiwen.com/subject/yyygoftx.html