Принципова різниця між fn () та новим fn () у JavaScript


12

У чому всі аспекти виклику функції з новим ключовим словом та без нього відрізняються у JavaScript? Я маю на увазі, чим відрізняються всі речі?

testFn() проти new testFn()

Відповіді:


13

newстворює новий (порожній) об'єкт і встановлює thisйого, потім викликає функцію, яка виступає конструктором для об'єкта (маніпулюючи this. чимось ). Виклик тієї самої функції без newключового слова дозволить їй діяти на будь- thisякий спосіб, який зараз означає.


Чи є щось більше до цього?
akp

@akp ні, це насправді так просто. За винятком того, що не згадувалося, це те, що якщо функція явно повертає тип посилання, це повертається, newа створений об'єкт витрачається даремно.
Есаїлія

2
Використання newпризведе до того, що прототип нового об'єкта буде встановлений так, щоб він посилався на функцію першої функції, до якої передається новий об'єкт. Я не думаю, що поведінку можна законно досягти іншими способами.
supercat

Ви маєте рацію, я це пропустив.
користувач281377

1

Ці варіанти синтаксично відрізняються: при "новому" варіанті передбачається, що функція є конструктором. Варіант без "нового" передбачає, що це не конструктор.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.