2017-01-21 133 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函数。