构造函数不只只出如今JavaScript中,它一样存在于不少主流的程序语言里,好比c++、Java、PHP等等。与这些主流程序语言同样,构造函数在js中的做用,也是用来建立对象时初始化对象,而且总与new运算符一块儿使用。html
在js中,构造函数与普通函数的区别不是很大。接下来就主要讲讲二者的区别。c++
1.在命名规则上,构造函数通常是首字母大写,普通函数则是遵守小驼峰式命名法。函数
2.在函数调用时,this
1 //构造函数 2 function Egperson (name,age) { 3 this.name = name; 4 this.age = age; 5 this.sayName = function () { 6 alert(this.name); 7 } 8 } 9 var person = new Egperson('mike','18'); //this-->person 10 person.sayName(); //'mike' 11 12 13 //普通函数 14 function egPerson (name,age) { 15 this.name = name; 16 this.age = age; 17 this.sayName = function () { 18 alert(this.name); 19 } 20 } 21 egPerson('alice','23'); //this-->window 22 window.sayName(); //'alice'
能够看出:spa
1)构造函数内部会建立一个实例,调用普通函数时则不会建立新的对象。code
2)构造函数内部的this指向是新建立的person实例,而普通函数内部的this指向调用函数的对象(若是没有对象调用,默认为window)htm
3.返回值对象
返回值方面,对于构造函数而言,若是返回值是基本数据类型,那么返回值就是this指向的实例;若是是复杂数据类型,那么返回值为对象(不知道这句话对不对)blog
刚刚看了一篇文章感受深受感动,看完以后,真有拨云见日的感受!我把连接放在下面,感兴趣的能够去看看,博主是以故事的形式讲述了JavaScript的对象问题,文笔简洁却不失趣味,很是易懂~ip
http://www.cnblogs.com/aishangJava/p/7232680.html