阅读 770

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

一、两者区别在于:

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'),
复制代码
文章分类
前端
文章标签