Javascript 普通函數和構造函數的區(qū)別
普通函數和構造函數的區(qū)別
在命名規(guī)則上,構造函數一般是首字母大寫,普通函數遵照小駝峰式命名法。
在函數調用的時候:
function fn() { }
構造函數:1. new fn( )
2 .構造函數內部會創(chuàng)建一個新的對象,即f的實例
3. 函數內部的this指向 新創(chuàng)建的f的實例
4. 默認的返回值是f的實例
普通函數:1. fn( )
2. 在調用函數的內部不會創(chuàng)建新的對象
3. 函數內部的this指向調用函數的對象(如果沒有對象調用,默認是window)
4. 返回值由return語句決定
構造函數的返回值:
有一個默認的返回值,新創(chuàng)建的對象(實例);
當手動添加返回值后(return語句):
1. 返回值是基本數據類型-->真正的返回值還是那個新創(chuàng)建的對象(實例)
2. 返回值是復雜數據類型(對象)-->真正的返回值是這個對象
看一個常見的面試題
<script>
function foo() {
var f2 = new foo2();
console.log(f2); //{a: 3}
console.log(this); //window
return true;
}
function foo2() {
console.log(this); //foo2類型的對象 不是foo2函數
// this.age = 30;
return {a: 3};
}
var f1 = foo();
console.log(f1); // true
</script>
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關文章
javascript中interval與setTimeOut的區(qū)別示例介紹
這篇文章主要介紹了javascript中interval與setTimeOut的區(qū)別,需要的朋友可以參考下2014-03-03
小議JavaScript中Generator和Iterator的使用
這篇文章主要介紹了小議JavaScript中Generator和Iterator的使用,文中舉了一個簡單的示例來說明二者之間的配合,需要的朋友可以參考下2015-07-07
JavaScript入門教程(9) Document文檔對象
Document文檔對象是JavaScript中window和frames對象的一個屬性,是顯示于窗口或框架內的一個文檔。2009-01-01

