引用JS对象中的内部变量

时间:2017-12-20 00:30:34

标签: javascript singleton

在这样一个简单的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

1 个答案:

答案 0 :(得分:1)

首先,您使用的是对象文字。你不能在对象文字中使用this,至少它不会像你想象的那样。在构造对象文字时,它将是可用的LeadserData.agent_id

其次,即使我们假设上述工作,数字是本机类型,它们也不会通过它们的引用共享。因此,即使您已将LeadserData.object_queries.emails.send_data.the_id分配给另一个,fc :: [a] -> IO [a] fc a = sequence $ map show list > fc [1,2,3] > [1,2,3] 也不会影响[]。本机类型在赋值时复制,不使用引用传递(就像使用对象一样)。