Скобки вокруг назначения - PullRequest
0 голосов
/ 05 июля 2018

Я пытался привязать «окно» к классу функции для целей тестирования, и это выглядит

function Dog() {} // OK, no problems here
function Dog() {}.bind(window) // Unexpected token .

(function Dog() {}).bind(window) // OK, no problems here

new Dog() // ReferenceError: Dog is not defined

Может кто-нибудь объяснить мне, почему класс функций не объявлен глобально? Какие круглые скобки делают? Это в другом объеме?

Спасибо

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

@ Чао спасибо.

Я ошибся

Я путал определения классов и функций.

Другими словами, если мы создадим новый экземпляр, это будет связано с этим экземпляром. Но если мы вызовем эту функцию вместо создания экземпляра, она изменит окно из-за привязки.

0 голосов
/ 05 июля 2018

Привязка к window не меняется window. Это даже не меняет Dog. bind просто возвращает вам функцию, которая работает как Dog, но в которой this - это тот же объект, что и window. (Обратите внимание, что возвращает связанную функцию . Если вы ничего не сделаете с возвращенной функцией, она будет отброшена, и вы вообще не увидите никаких эффектов.)

Если вы хотите объявить функцию глобально, вы можете сказать window.Dog = function() { ... }.

...