在创建对象之前使用对象的变量

时间:2018-09-30 08:31:03

标签: javascript ecmascript-6

我想在实际创建对象之前创建指向对象变量的“指针”:

anotherFunc();

function anotherFunc()
{
  let obj3 = { param1 : obj1.hp , param2 : obj2.hp };

  myFunction(obj3);
}

function myFunction(parameters)
{
  let obj1 = {
    hp: 100
  };

  let obj2 = {
    hp: 50
  };

  console.log(parameters);
  thirdFunc(parameters);
}

function thirdFunc({param1, param2}={})
{
  console.log(param1);
}

如果我当然运行此代码,则会出现错误,因为此时obj1和obj2不存在。但是,我希望能够告诉程序:“嘿,目前这些变量和对象不存在,但是当我告诉您时,您需要在闭包中查找它们并获取它们的值”。甚至有可能在js中具有这种功能吗?

// 编辑

对不起,看来我确实提出了不适当的问题。不可能做我想做的事。

2 个答案:

答案 0 :(得分:0)

它不能按顺序工作。

您可以将对象绑定到函数,并以this作为结果的引用。 Function#bind返回一个新函数,必须为结果调用该函数。

2

答案 1 :(得分:0)

在运行时,当您致电obj1并到达此行anotherFunc时,尚未声明let obj3 = { param1 : obj1.hp , param2 : obj2.hp };。您无法访问未声明的变量,否则将获得variableName is not defined。就您而言,每个变量仅在其作用域(功能)中可用。

我不知道您要达到什么目标,但也许是这样的:

function anotherFunc() {
  let obj3 = { param1 : null , param2 : null };

  myFunction(obj3);
}

function myFunction(obj) {
  obj.param1 = 100;
  obj.param2 = 50;

  console.log(obj);
  thirdFunc(obj);
}

function thirdFunc({param1, param2} = {}) {
  console.log(param1);
}

anotherFunc();

如果您还需要其他东西,可以请您描述一下您想要什么吗?