JS中构造函数与函数的区别

149 阅读1分钟

两者区别:

1、构造函数习惯上首字母大写
构造函数
function Person(){
}

函数
function person(){
}
2、调用方式不一样。作用也不一样(构造函数用来新建实例对象)
2.1 普通函数的调用方式:直接调用 person();
2.2 构造函数的调用方式:需要使用new关键字来调用 new Person();
2.3 构造函数的函数名与类名相同:Person() 这个构造函数,Person 既是函数名,也是这个对象的类名

3、函数中this的指向不同

3.1 普通函数中的this,在严格模式下指向undefined,非严格模式下指向window对象
3.2 构造函数的this则是指向它创建的对象实例

function Person () {
  this.name = "this指向它创建的对象实例";
}
let t = new Person(); //也就是t
console.log(t.name);

4、函数例子:因为没有返回值,所以为undefined

 function person () {
 }
let per = person();
console.log(per)//因为没有返回值,所以为undefined

5、构造函数例子:构造函数会马上创建一个新对象,并将该新对象作为返回值返回

function Person () {
}
let per =new Person();
console.log(per)//构造函数会马上创建一个新对象,所以为[objcte Object]