2017-01-21 131 views
1

這些函數有什麼區別?有什麼優點和缺點?JavaScript原型函數

let Test = function(name) { 
    this.name = name; 
    this.complete = function() { 
    console.log(`completing task${this.name}`) 
    } 
} 

let Test = function(name) { 
    this.name = name; 
} 

Test.prototype.complete = function() { 
    console.log(`completing task${this.name}`) 
} 

回答

2

不同的是,每一個對象,你將與第一個函數來創建將有它的complete功能的單獨的實例。雖然您將使用第二個函數創建的每個對象都將共享相同的complete函數,您可以在使用Test創建的對象的原型上找到該函數。

因此,如果使用第一個函數創建100個對象,則所有這些對象在內存中的complete函數都會有不同的引用。而在第二種情況下,您將只有一個,因爲所有這些對象都會在其原型上找到complete函數。