前言
本文記錄普通函數(shù)與構(gòu)造函數(shù)的區(qū)別對(duì)比。
另外關(guān)于普通函數(shù)調(diào)用的fn()
和構(gòu)造函數(shù)調(diào)用的new fn()
狼纬,在另一篇文章
正文
對(duì)比
- 命名方式幻妓,普通函數(shù)一般小寫廊宪,構(gòu)造函數(shù)首字母大寫
// 普通函數(shù):
function fn() {
this.a = 1;
}
// 構(gòu)造函數(shù):
function Fn() {
this.a = 1;
}
- 調(diào)用方法安拟,普通函數(shù)一般直接調(diào)用昧捷,構(gòu)造函數(shù)一般new方法調(diào)用
// 普通函數(shù):
fn()
// 構(gòu)造函數(shù):
var f = new fn()
- 原理
// 普通函數(shù)因?yàn)闆](méi)有返回值,一般為undefined,函數(shù)中的this一般指向外層否淤,比如window
fn();
undefined;
window.a; // 1
// 構(gòu)造函數(shù)因?yàn)橛蟹祷刂担瘮?shù)中的this指向?qū)ο蟊旧怼?var f = new fn();
f
f instanceof fn; // true
window.a; // undefined
f.a; // 1