Javascript 有JS“吗;“范围块”;有目标吗?

Javascript 有JS“吗;“范围块”;有目标吗?,javascript,Javascript,假设我有这样一个对象: var Root = { A: { AA: ..., AB: ..., AC: function() {} } }; JS中是否有语法支持“范围块”或类似的东西,比如伪代码,这样我就可以调用函数AC()或获取值AB,而不必冗余地写入Root.a 类似这样的东西 (Root.A) { AC(); console.log(AB); } Root.A.AC(); console.log(Root

假设我有这样一个对象:

var Root = {
    A: {
        AA: ...,
        AB: ...,
        AC: function() {}
    }
};
JS中是否有语法支持“范围块”或类似的东西,比如伪代码,这样我就可以调用函数
AC()
或获取值
AB
,而不必冗余地写入
Root.a

类似这样的东西

(Root.A) {
    AC();
    console.log(AB);
}
Root.A.AC();
console.log(Root.A.AB);
表示类似的意思

(Root.A) {
    AC();
    console.log(AB);
}
Root.A.AC();
console.log(Root.A.AB);

如果您正在查找外部对象,则函数内部的该
将引用外部对象

var Root={
A:{
机管局:1234,
AB:‘AB文本’,
AC:函数(){
//这个===根
把这个还给我;
}
}
};

console.log(Root.A.AC())

var Root={
A:{
机管局:1234,
AB:‘AB文本’,
AC:函数(){
//这个===根
把这个还给我;
}
}
};

console.log(Root.A.AC())
目前,没有推荐的实现方法。我们有
with
语句,它完全可以满足您的需要,但它会带来性能成本,并且在
严格模式下被明确禁止(解释)

如果出于某种原因您绝对需要此功能,您可以将
一起使用,如下所示:

var Root={
A:{
AA:5,
AB:6,
AC:function(){return 4;}
}
};
使用(Root.A){
控制台日志(AB);
控制台日志(AA);
console.log(AC());

}
目前,没有推荐的方法来实现这一点。我们有
with
语句,它完全可以满足您的需要,但它会带来性能成本,并且在
严格模式下被明确禁止(解释)

如果出于某种原因您绝对需要此功能,您可以将
一起使用,如下所示:

var Root={
A:{
AA:5,
AB:6,
AC:function(){return 4;}
}
};
使用(Root.A){
控制台日志(AB);
控制台日志(AA);
console.log(AC());
}
在某些版本(我认为是ES6)中,您可以使用解构赋值并编写如下内容:

const {AA, AB, AC} = Root.A;
AC();
console.log(AB);
如果这有帮助的话。

在(ES6)的某个版本中,您可以使用一个解构赋值并编写如下内容:

const {AA, AB, AC} = Root.A;
AC();
console.log(AB);

如果这有帮助的话。

您正在寻找,但这是非常令人沮丧的(正如文档所解释的)。为什么您有“A”?您可以只使用var Root={…}文档似乎主要关注模糊性。更奇怪的是,如果字面上(为了论证)所有的JS功能都包含在
Root.A下,那么在这种情况下,它是否消除了将
一起使用的问题?@NoChance表明了这一点,它不是实际的代码obviously@4castle我不知道。谢谢你的提示。删除了标签。您正在寻找,但它非常不受欢迎(正如文档所解释的)。为什么您有“A”?您可以只使用var Root={…}文档似乎主要关注模糊性。更奇怪的是,如果字面上(为了论证)所有的JS功能都包含在
Root.A下,那么在这种情况下,它是否消除了将
一起使用的问题?@NoChance表明了这一点,它不是实际的代码obviously@4castle我不知道。谢谢你的提示。删除了标记。是否有任何不使用此标记的原因,如使用
?我能想到的唯一原因是您需要支持javascript早期版本ES6。是否有任何不使用此标记的原因,如使用
?我能想到的唯一原因是您需要支持javascript早期版本ES6。