如何在JavaScript函数中访问当前上下文?

时间:2019-10-02 10:59:30

标签: javascript

如果我有这样的功能:

function doSomething(opt)
{
}

我这样称呼它:

doSomething({a: 234, b: 567});

是否有与PHP extract()函数等效的Javascript,所以我可以这样做:

function doSomething(opt)
{
    extract(opt);

    alert(a); // 234
    alert(b); // 567
}

不再建议使用with()语句,并且使用'this'变量访问全局作用域-而不是函数作用域。

更新:

目前,我正在像这样手动提取:

function doSomething (opt)
{
    var a = opt.a,
        b = opt.b;
}

3 个答案:

答案 0 :(得分:3)

您可以使用ES6解构:

function doSomething({a, b})
{
    alert(a);
    alert(b);
}

function doSomething(opt)
{
    const {a, b} = opt;
    alert(a);
    alert(b);
}

答案 1 :(得分:1)

解构是一种方法。下面是另一种方法。

JavaScript有一个称为Rest参数的概念。...在数组中收集其余参数。这意味着什么?

function doSimething(...items) {
     items.forEach(() => {
        // you can do stuff with each of the items.
    });
}

您可以称之为 doSimething(1); doSomething(3,5,h);

这种方法可以帮助您使函数更加通用并在更多地方使用。

Additional information on JavaScript rest / spread parameters

答案 2 :(得分:-1)

function extract(data, where) {
for (var key in data) {
    where[key] = data[key];
  }
}

function doSomething(object) {

   extract(object, this);

}