«это» в функциях верхнего уровня - PullRequest
0 голосов
/ 28 мая 2018

Я понимаю, как работает ключевое слово this, так как оно контекстуально тому, что оно вызывается, что оно может быть связано и т. Д. Одна вещь, которую я не понимаю, - это пример, подобный этому:

function Person(first, last, age, gender, interests) {
  this.name = {
    first,
    last
  };
  this.age = age;
  this.gender = gender;
  this.interests = interests;
};

то, что я предположил, произойдет здесь, это прикрепит к объекту окна и добавит эти свойства.что заставляет ключевое слово "this" работать в этой ситуации иначе, чем я думал, что это работает в методе или функции конструктора, где this привязано к окружающей функции?

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

В приведенном выше примере функция является конструктором класса es5 .

Когда функция используется в качестве конструктора (с ключевым словом new), ее this привязываетсяк строящемуся новому объекту.

Надеюсь, это поможет:)

0 голосов
/ 28 мая 2018

То есть, когда вы вызываете функцию Person через оператор new, она становится конструктором, а this представляет вновь созданный объект с помощью new.

Другими словами, подумайтеиз new как создание нового пустого объекта, а затем вызвать Person для этого вновь созданного объекта и, наконец, вернуть его полностью "созданным".

...