Я столкнулся с этой проблемой, я хотел бы, чтобы функция была доступна извне, но она также должна наследовать некоторые свойства, основанные на области видимости, потому что она используется в JSON.stringify()
в качестве необязательного строкового спецификатора и поэтому не может передавать дополнительный контекст в это.
Итак, допустим, у меня есть этот код
let object = {
function1(){
let a = 1
console.log(object.function2()) // a is not defined undefined
},
function2(){ return a }
}
Так что мне интересно, есть ли способ изменить состояние закрытия / области видимости для функции 2, например связать новый контекст этого, но привязка всей области видимости.
Единственный способ, который я выяснил, это
let object = {
function1(){
let a = 1
let function2 = eval('(function '+object.function2.toString()+')')
console.log(function2()) // 1
},
function2(){ return a }
}
Причиной этого является управление памятью, так как я не хочу создавать новую функцию каждый раз, когда другая функция вызывается.