構造函數不只只出如今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