在js中构造函数的函数名一般首字母要大写。
1 function Fn(name,age){
2 this.name=name;
3 this.age=age;
4 this.str=‘hello‘;
5 //return this; 这一句可省略,因为构造函数默认有这一句
6 }
7
8 var f=new Fn(‘zhangsan‘,10);
9 console.log(f.age);//10
通过new一个构造函数可以创建一个对象,那么new一个构造函数的过程中,具体做了什么呢?
1.创建了一个空对象,并将this指向这个空对象。
2.执行函数,即为this添加属性和属性值。
3.返回这个对象。
其次,在js中array,object,function都可以通过new对应的函数来创建:
var a=[1,2,3] 实际上是 var a=new Array()的语法糖
var a={}实际上是var a=new Object()的语法糖
var a=function(){}实际上是var a=Funciton()的语法糖
虽然后者写法上没错,但实际写的过程还是会推荐前一种写法,简洁,易于理解。
最后,使用instanceof 可以判断一个函数是否是某个变量的构造函数。如:
1 f instanceof Fn;//true