JavaScript總結學習一:js中構造函數與普通函數的區別


構造函數不僅只出現在JavaScript中,它同樣存在於很多主流的程序語言里,比如c++、Java、PHP等等。與這些主流程序語言一樣,構造函數在js中的作用,也是用來創建對象時初始化對象,並且總與new運算符一起使用。

在js中,構造函數與普通函數的區別不是很大。接下來就主要講講兩者的區別。

1.在命名規則上,構造函數一般是首字母大寫,普通函數則是遵照小駝峰式命名法。

2.在函數調用時,

 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'

可以看出:

1)構造函數內部會創建一個實例,調用普通函數時則不會創建新的對象。

2)構造函數內部的this指向是新創建的person實例,而普通函數內部的this指向調用函數的對象(如果沒有對象調用,默認為window)

3.返回值

返回值方面,對於構造函數而言,如果返回值是基本數據類型,那么返回值就是this指向的實例;如果是復雜數據類型,那么返回值為對象(不知道這句話對不對)

 

剛剛看了一篇文章感覺深受感動,看完之后,真有撥雲見日的感覺!我把鏈接放在下面,感興趣的可以去看看,博主是以故事的形式講述了JavaScript的對象問題,文筆簡潔卻不失趣味,非常易懂~

http://www.cnblogs.com/aishangJava/p/7232680.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM