前言
本文记录普通函数与构造函数的区别对比。
另外关于普通函数调用的fn()
和构造函数调用的new fn()
,在另一篇文章
正文
对比
- 命名方式,普通函数一般小写,构造函数首字母大写
// 普通函数:
function fn() {
this.a = 1;
}
// 构造函数:
function Fn() {
this.a = 1;
}
- 调用方法,普通函数一般直接调用,构造函数一般new方法调用
// 普通函数:
fn()
// 构造函数:
var f = new fn()
- 原理
// 普通函数因为没有返回值,一般为undefined,函数中的this一般指向外层,比如window
fn();
undefined;
window.a; // 1
// 构造函数因为有返回值,函数中的this指向对象本身。
var f = new fn();
f
f instanceof fn; // true
window.a; // undefined
f.a; // 1