首先,构造函数也是普通函数,和普通函数的创建方法一样,但是习惯首字母大写。
1.调用方式不一样
//普通函数直接函数名加括号调用
add()
//构造函数使用new关键字,和Java有点像
var p = new Person()
2.作用不一样,构造函数一般用来创建新的实例对象
3.函数内部的this指向也不一样
普通函数内的this在严格模式下指向undefined,在非严格模式下指向window
function foo(){
console.log(this===window);
}
foo();
//代码运行结果:true
构造函数的this则是指向调用它的实例对象
function Person(){
this.name = "olivia";
}
var p = new Person();
console.log(p.name);
//代码运行结果:olivia
//补充:构造函数的函数名和类名相同:Person()这个构造函数,Person是函数名,也是这个对象的类名。