这些功能有什么区别?有什么优点和缺点?
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}`)
}
答案 0 :(得分:2)
不同之处在于,您将使用第一个函数创建的每个对象都具有complete
函数的单独实例。虽然您将使用第二个函数创建的每个对象将共享相同的complete
函数,该函数可以使用Test
在您创建的对象的原型中找到。
因此,如果使用第一个函数创建100个对象,则所有这些对象在内存中对complete
函数都有不同的引用。而在第二种情况下,您只有一个,因为所有这些对象都会在其原型上找到complete
函数。