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
控制台打印结果: