如何使用;加上;javascript中的构造?

如何使用;加上;javascript中的构造?,javascript,Javascript,我有以下代码: var home = {} home.table={} home.table.width = 100 home.table.length = 200 home.table.weight = 20 home.table.material = "wood" home.table.color = "brown" 如何正确地使用结构和(object){code}来获得这样的结果 var home = {} with (home) { table = {} table.width = 1

我有以下代码:

var home = {}
home.table={}
home.table.width = 100
home.table.length = 200
home.table.weight = 20
home.table.material = "wood"
home.table.color = "brown"
如何正确地使用结构
和(object){code}
来获得这样的结果

var home = {}
with (home) {
table = {}
table.width = 100
table.length = 200
table.weight = 20
table.material = "wood"
table.color = "brown"
}

首先,你应该读一下这个。引用该页的话:

不建议使用with语句,因为它可能是源代码 容易混淆的bug和兼容性问题。请参阅“模糊控制” 有关详细信息,请参见下面“说明”部分的段落

而且:

不建议与一起使用,并且在ECMAScript 5中禁止使用 模式建议的替代方法是指定其 要访问临时变量的属性


其次,如果我正在编写您的代码,我会这样做:

var home = {};
home.table = {
    width: 100,
    length: 200,
    weight: 20,
    material: 20,
    color: "brown"
};
或者,整个过程甚至可以在一个JS文本中完成:

var home = {
  table: {
    width: 100,
    length: 200,
    weight: 20,
    material: 20,
    color: "brown"
  }
};

下面是一个使用临时变量的示例(推荐使用MDN将
替换为
)——尽管在这种情况下,我更喜欢上面的格式:

var home = {};
home.table = {};
var table = home.table;
table.width = 100;
table.length = 200;
table.weight = 20;
table.material = 20;
table.color = "brown";

首先,你应该读一下这个。引用该页的话:

不建议使用with语句,因为它可能是源代码 容易混淆的bug和兼容性问题。请参阅“模糊控制” 有关详细信息,请参见下面“说明”部分的段落

而且:

不建议与一起使用,并且在ECMAScript 5中禁止使用 模式建议的替代方法是指定其 要访问临时变量的属性


其次,如果我正在编写您的代码,我会这样做:

var home = {};
home.table = {
    width: 100,
    length: 200,
    weight: 20,
    material: 20,
    color: "brown"
};
或者,整个过程甚至可以在一个JS文本中完成:

var home = {
  table: {
    width: 100,
    length: 200,
    weight: 20,
    material: 20,
    color: "brown"
  }
};

下面是一个使用临时变量的示例(推荐使用MDN将
替换为
)——尽管在这种情况下,我更喜欢上面的格式:

var home = {};
home.table = {};
var table = home.table;
table.width = 100;
table.length = 200;
table.weight = 20;
table.material = 20;
table.color = "brown";

如果不指定对象,则无法在对象中创建属性。首先创建属性,然后可以在
with
块中使用它:

var home = {};
home.table = {};
with(home) {
    table.width = 100;
    table.length = 200;
    table.weight = 20;
    table.material = "wood";
    table.color = "brown";
}
但是,不建议将
一起使用。它会混淆作用域,在HTML5严格模式下是不允许的

您可以使用对象文字以更少的代码创建相同的对象:

var home = { table: { width: 100, length: 200, weight: 20, material: "wood", color: "brown" } };

如果不指定对象,则无法在对象中创建属性。首先创建属性,然后可以在
with
块中使用它:

var home = {};
home.table = {};
with(home) {
    table.width = 100;
    table.length = 200;
    table.weight = 20;
    table.material = "wood";
    table.color = "brown";
}
但是,不建议将
一起使用。它会混淆作用域,在HTML5严格模式下是不允许的

您可以使用对象文字以更少的代码创建相同的对象:

var home = { table: { width: 100, length: 200, weight: 20, material: "wood", color: "brown" } };

您是否希望在局部范围内为变量添加别名?函数在这方面工作得很好。我将很快说:不要在JavaScription中使用WITH您是否希望在局部范围中为变量添加别名?函数在这方面工作得很好
?@OrangeFox-我的答案中添加了临时变量示例,不过在本例中,我更喜欢上面的一个。@Tibos-如果您想要最大的简洁性,您当然可以将这样的定义嵌套在一个JS文本中。有时这是适当的,有时它不是可读的-它取决于这里没有提供的上下文。我在这里的目的是回答关于使用
with
的替代方法的问题,这只与表对象的声明有关
?@OrangeFox-我的答案中添加了临时变量示例,不过在本例中,我更喜欢上面的一个。@Tibos-如果您想要最大的简洁性,您当然可以将这样的定义嵌套在一个JS文本中。有时这是适当的,有时它不是可读的-它取决于这里没有提供的上下文。我在这里的目的是回答关于使用
的替代方法的问题,这只与表对象的声明有关。