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刪除。



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