函数表达式和构造函数的区别

//函数表达式,将一个函数赋值给一个变量
var a=function(config){
this.name=config;
this.out = function(){
alert(1)
}

}
a.name='hewenk';
a.prototype.inner=function(){
alert(1)
}
var n=new a('1234');
n.out();//1
n.inner();//1
console.log(n.name)//1234
console.log(a.name);//空 函数表达式的自定义属性实例无法继承

//直接定义一个函数
function b(config){
this.name=config;
this.out = function(){
alert(2)
}
}
b.prototype.inner=function(){
alert(2);
}
b.name = '1234';
var m=new b('123');
m.out();//2
m.inner();//2
console.log(m.name);//123 构造函数的自定义属性实例无法继承
在使用过程中:全局的带var和function的先预解释,但是function在预解释的时候就创建堆内存,给这个函数一个保存地址,而函数表达式只是先申明,只有在使用的时候才进行定义,所以函数表达式
使用之前需要先定义好,例如下面这个例子,就会报错
var n=new a('1234');// a is not a constructor
n.out();//
n.inner();//
console.log(n.name)//
console.log(a.name);//空
var a=function(config){
this.name=config;
this.out = function(){
alert(1)
}

}
在使用的过程中,两者的区别不是很大,都不能继承自定义的属性,函数表达式需要先定义后使用
人活着,最重要的就是开心
原文地址:https://www.cnblogs.com/-youth/p/5544141.html