Я не уверен, что я делаю здесь неправильно, или если я неправильно понимаю, пусть vs var / this согласно https://www.w3schools.com/js/js_let.asp Надеюсь, кто-то может объяснить.
Приведенный ниже пример кода демонстрирует проблему:
testObjectScope(){
let localObject=this.testObject;
localObject["c"]="charlie";
return localObject;
}
с выводом в консоли разработчика в первой строке функции:
this.testObject: Object
a: "alpha"
b: "bravo"
__proto__: Object
, затем в обратной строке:
this.testObject: Object
a: "alpha"
b: "bravo"
c: "charlie"
__proto__: Object
localObject: Object
a: "alpha"
b: "bravo"
c: "charlie"
__proto__: Object
однако я ожидаю 'let 'не должен иметь возможности изменять свойство объекта (т. е. быть глубокой копией), и это должно быть так:
this.testObject: Object
a: "alpha"
b: "bravo"
__proto__: Object
localObject: Object
a: "alpha"
b: "bravo"
c: "charlie"
__proto__: Object
, поэтому' let 'не объявляет переменную внутри функции, к которой нельзя получить доступ нигдеостальное. Поэтому, когда функция завершена и область видимости удалена от функции, как она меняет свойство localObject, создайте изменение с помощью testObject