在命名規則上,構造函數一般是首字母大寫,普通函數遵照小駝峰式命名法。 在函數調用的時候: function fn() { } 構造函數:1. new fn( ) 2 .構造函數內部會創建一個新的對象,即f的實例 3. 函數內部的this指向 新創建的f的實例 4. 預設的返回值是f的實例 普通函數: ...
在命名規則上,構造函數一般是首字母大寫,普通函數遵照小駝峰式命名法。 在函數調用的時候: 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>