Функции стрелок захватывают значение this
вложенного контекста
function Person(){
this.age = 0;
setInterval(() => {
this.age++; // |this| properly refers to the person object
}, 1000);
}
var p = new Person();
Итак, чтобы напрямую ответить на ваш вопрос, this
внутри вашей функции стрелки будет иметь то же значение, что и раньше, перед назначением функции стрелки.
Строки ЯВЛЯЮТСЯ ссылочными типами. Однако они неизменны (они не могут быть изменены), таким образом, действительно не имело бы значения, если бы они скопировали значением или скопировали ссылкой.
, Если они мелко скопированы затем, ссылка будет скопирована..., но Вы не можете изменить их так, Вы не можете влиять на два объекта сразу.
Рассмотрите это:
public class Person
{
string name;
// Other stuff
}
при вызове MemberwiseClone Вы закончите с двумя отдельными экземплярами Человека, но их name
переменные, в то время как отличный, будут иметь то же значение - они обратятся к тому же строковому экземпляру. Это вызвано тем, что это - мелкий клон.
, Если Вы меняете имя в одном из тех экземпляров, которые не будут влиять на другой, потому что сами эти две переменные являются отдельными - Вы просто изменяете значение одного из них для обращения к другой строке.
Вы только копируете ссылка (думайте "указатель"); эти две ссылки являются отдельными (но, окажись, иметь то же значение), но существует только единственный строковый объект.