<分区>
这是我想要实现的:
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);
当然,bind() 函数不是那样工作的。我的想法是这样做:
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);
不幸的是,这样做的变量是在全局范围内声明的,垃圾收集器不会在函数执行后释放它们。所以我还必须在我的函数末尾添加类似这样的内容:
for (let p in scope)
{
if (scope.hasOwnProperty(p))
delete window[p];
}
但众所周知,删除运算符非常繁重,因此我想省略使用它。 这就是为什么我正在寻找一种方法将对象属性转换为函数范围内的变量。
PS:我不能使用解构赋值,因为我不知道对象属性的名称。