JS 中构造函数和普通函数的区别
1、构造函数也是一个普通函数,创建方式和普通函数一样,但构造函数习惯上首字母大写
2、构造函数和普通函数的作用不一样(构造函数用来新建实例对象)
3、调用方式不一样。
- 普通函数的调用方式:直接调用 person();
- 构造函数的调用方式:需要使用new关键字来调用 new Person();
4、this 的作用
构造函数,内部用this 来构造属性和方法,并指向实例
function Person(name) {
this.name = name;
this.sayFuck = function () {
console.log("Fuck")
};
};
5、执行流程
构造函数的执行流程(构造函数被 new 之后,会发生什么)
- 立刻在堆内存中创建一个新的对象
- 将新建的对象设置为函数中的this
- 逐个执行函数中的代码
- 将新建的对象作为返回值
普通函数
- 创建一个堆内存,形成一个独立的作用域,
- 逐个执行函数中的代码。
- 没有指定返回内容,默认是 undefined
6、返回的内容不一样
- 普通函数,因为没有返回值,所以为undefined
- 构造函数,构造函数会马上创建一个新对象,并将该新对象作为返回值返回
7、用 instanceof 可以检查一个对象是否是一个类的实例,是则返回true;
function Person(name) {
this.name = name;
this.sayFuck = function () {
console.log("Fuck")
};
};
let Child = new Person
console.log(Child instanceof Person); // true
console.log(Child instanceof Function); // false
console.log(Person instanceof Function); // true
console.log(Child instanceof Object); // true