1、调用方式不一样
- 普通函数调用方式:直接调用person();
- 构造函数调用方式:需要使用new关键字来调用 new person();
function fn(){}
fn();
let f = new fn();
2、作用不一样(构造函数用来新建实例对象)
3、首字母大小写习惯
4、函数中this的指向不同
- 普通函数中的this,在严格模式下指向undefined,非严格模式下指向window对象。
- 构造函数的this则是指向它创建的对象实例。
function fn(){
console.log(this===window);
}
fn();
function fn(){
this.name = "张三";
}
let f = new fn();
console.log(f.name);
5、写法的不同
function Person(name){
this.name = name;
}
let p = new Person('John');
function person(name){
let obj = new Object();
obj.name = name;
return obj;
}
let p = person('john');