什么是构造函数?构造函数与普通函数的区别?

什么是构造函数?

典型的面向对象编程语言(比如 Java 和 Python),都有“类”(class)这个概念。所谓“类”就是对象的模板,对象就是“类”的实例。但是,JavaScript 语言的对象体系,不是基于“类”的,而是基于构造函数(constructor)和原型链(prototype)。

因此构造函数就是专门用来生成对象实例的函数(模板),或者说批量来创建类似的对象

构造函数与普通函数的区别?

1、调用方式不一样
//构造函数也是一个普通函数,创建方式和普通函数一样。
function Foo(){
    
    }
Foo();//普通函数调用方式
var f = new Foo();//构造函数调用方式
复制代码
  • 普通函数调用方式:直接调用person();
  • 构造函数调用方式:需要使用new关键字来调用 new person();
2、作用也不一样(构造函数用来批量来创建类似的对象)
3、首字母大小写习惯
  • 一般构造函数的函数名称会用大写
  • 普通函数用小写
4、函数中this的指向不同
  • 普通函数中的this,在严格模式下指向undefined,非严格模式下指向window对象。
function foo(){
    
    
	console.log(this===window);
}
foo();
//代码运行结果:true
复制代码
  • 构造函数的this则是指向它创建的对象实例。
function Foo(){
    
    
	this.name = "令狐冲";
}
var f = new Foo();
console.log(f.name);
//代码运行结果:令狐冲
//补充:构造函数的函数名和类名相同:Foo()这个构造函数,Foo是函数名,也是这个对象的类名。
5、写法的不同

构造函数:

function Person(name){
    
    
	this.name = name;
}
var p = new Person('John');//使用new关键字,不使用return
复制代码

普通函数:

function person(name){
    
    
	var obj = new Object();
	obj.name = name;
	return obj;//使用return
}
var p = person('john');
复制代码
function person(name){
    
    
	this.name = name;
	return this;//使用return
}
var p = person('john'),

猜你喜欢

转载自blog.csdn.net/qq_52006046/article/details/128758811