使用New是構造函數,不使用New是函數調用,同時this指向不同。 示例: function Test(name, age, job) { console.log(this); this.name = name; this.age = age; this.job = job; } 1、直接調用函數 ...
使用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 直接調用上下文指向是window2、使用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函數與直接調用函數產生的結果等同,但是是兩個不同的過程,一個是構造對象、一個是函數調用。