2017-01-21 2 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 на своем прототипе.

 Смежные вопросы

  • Нет связанных вопросов^_^