This is what i want to achieve:
let scope = { property: "value" };
function fun()
{
//That's how I can get my variables:
console.log(this.property);
//And that's how I want to get them
console.log(property);
}
fun.call(scope);
But of course the bind() function doesn't work like that. My idea was to do it this way:
let scope = { property: "value" }
function fun(scope)
{
for (let p in scope)
{
if (scope.hasOwnProperty(p))
window[p] = scope[p];
}
// Now it works
console.log(property);
}
fun(scope);
Unfortunately by doing this variables are declared in the global scope and the Garbage Collector won't free them up after function execution. So I would have to also add something like this at the end of my function:
for (let p in scope)
{
if (scope.hasOwnProperty(p))
delete window[p];
}
But as we all know delete operator is pretty heavy, so I would like to omit using it. That's why I'm looking for a way to convert object properties into variables in function scope.
PS: I can't use destructuring assignment because I don't know names of object properties.