js New一個函數和直接調用的區別


使用New是構造函數,不使用New是函數調用,同時this指向不同。

示例:

function Test(name, age, job) {

  console.log(this);

  this.name = name;

  this.age = age;

  this.job = job;

}

1、直接調用函數

  var test1 = Test('Tom', 27, 'IT');

  來看下test1的值:

  console.log(test1); // undefined
   直接調用上下文指向是window

2、使用new構造函數

  var test2 = new Test('Tom', 27, 'IT');

  來看下test2的值:

  console.log(test2); 
  console.log(typeof test2); // "object"
  
   new會使執行函數的上下文指向這個函數的本身。
 

 最后得出一個猜測:

如果函數返回值為常規意義上的值類型(Number、String、Boolean)時,new 函數將會返回一個該函數的實例對象,而如果函數返回一個引用類型(Object、Array、Function),雖然new函數與直接調用函數產生的結果等同,但是是兩個不同的過程,一個是構造對象、一個是函數調用。

 


免責聲明!

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



猜您在找 Js new一個函數和直接調用函數的區別 Js 使用new關鍵字調用函數和直接調用函數的區別 jquery js解析函數、函數直接調用 如何用 js 實現一個 new 函數 String直接賦值和使用new的區別 能直接調用析構函數,不能直接調用構造函數 函數直接寫在html頁面的