javascript学习笔记--构造函数

2018-10-08  本文已影响0人  持续5年输出bug

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

控制台打印结果:


上一篇下一篇

猜你喜欢

热点阅读