引用JS对象中的内部变量[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了引用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,即使你已经分配给另一个。本机类型在赋值时被复制,而不是使用引用传递(就像您对对象一样)。

以上是关于引用JS对象中的内部变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何创建片段以重复变量编号中的代码行

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程

关于JS 函数里 修改 全局变量 的问题

JS高级:闭包

js中的变量作用域问题