引用JS对象中的内部变量



在这样的简单JS对象中:

var LeadserData = {
    agent_id: 2,
    object_queries: {
        emails: {
            url: "/manual_emails/",
            method: 'GET',
              send_data: { 
                   the_id: this.agent_id
              }
        }
    }
}

显然可以像这样访问Agent_ID:

LeadserData.agent_id = 100;
alert(LeadserData.agent_id);

这显然返回100。但是,为什么this.agent_id的内部引用不起作用?

alert((LeadserData.object_queries.emails.send_data.the_id));

我期望这也会以" 100"的形式出现,但是它是不确定的。整个小提琴在这里:https://jsfiddle.net/h88zc5nw/1/

该行为的解释是什么,我该如何调整以返回预期的100

首先,您使用的对象文字。您不能在对象内部使用this,至少不是您认为的。在构造对象时,它将是任何可用的this

第二,即使我们假设上述作品,数字是本地类型,它们也不会通过其参考分享。因此,即使您已将LeadserData.agent_id更改也不会影响LeadserData.object_queries.emails.send_data.the_id。本地类型被复制在分配中,未使用参考(就像您使用对象一样)。

最新更新