普通函數和構造函數的區別


在命名規則上,構造函數一般是首字母大寫,普通函數遵照小駝峰式命名法。
在函數調用的時候:
function fn() { }
     構造函數:1. new fn( )
                     2 .構造函數內部會創建一個新的對象,即f的實例
                     3. 函數內部的this指向 新創建的f的實例
                     4. 默認的返回值是f的實例
     普通函數:1. fn( )
                     2. 在調用函數的內部不會創建新的對象
                     3. 函數內部的this指向調用函數的對象(如果沒有對象調用,默認是window)
                     4. 返回值由return語句決定
 
  構造函數的返回值
     有一個默認的返回值,新創建的對象(實例);
     當手動添加返回值后(return語句):
          1. 返回值是基本數據類型-->真正的返回值還是那個新創建的對象(實例)
          2. 返回值是復雜數據類型(對象)-->真正的返回值是這個對象
 
看一個常見的面試題
 1 <script>
 2     function foo() {
 3         var f2 = new foo2();
 4         console.log(f2);    //{a: 3}
 5         console.log(this); //window
 6         return true;
 7     }
 8     function foo2() {
 9         console.log(this); //foo2類型的對象 不是foo2函數
10 //        this.age = 30;
11         return {a: 3};
12     }
13     var f1 = foo();
14     console.log(f1); // true
15 </script>

 


免責聲明!

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



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