我需要更好地理解Javascript对象的基本性质
如果我声明一个对象如下:我需要更好地理解Javascript对象的基本性质,javascript,object,Javascript,Object,如果我声明一个对象如下: var foo.bar = new Object; var foo.bar = new Object; 这会自动使foo成为一个对象吗?如果不是,并且我希望foo和foo.bar都是对象,那么我需要使用以下代码: var foo = new Object; var foo.bar = new Object; var foo = new Object; var foo.bar = new Object; 如果我像上面那样创建这两个对象,它们之间是父子关系还是完
var foo.bar = new Object;
var foo.bar = new Object;
这会自动使foo成为一个对象吗?如果不是,并且我希望foo和foo.bar都是对象,那么我需要使用以下代码:
var foo = new Object;
var foo.bar = new Object;
var foo = new Object;
var foo.bar = new Object;
如果我像上面那样创建这两个对象,它们之间是父子关系还是完全独立的实体
很抱歉,我的问题很简单,但我正试图更全面地理解数据的各种结构方式。第一个示例将导致错误,因为之前没有定义foo,但您可以做的是使用对象文字:
var foo = { bar: new Object() };
甚至:
var foo = { bar: {} };
var foo = {"bar": {}};
就您的上一个问题而言,bar变成了foo的一个属性。第一个示例将导致错误,因为之前尚未定义foo,但您可以做的是使用对象文字:
var foo = { bar: new Object() };
甚至:
var foo = { bar: {} };
var foo = {"bar": {}};
关于你的最后一个问题,酒吧成了富的财产
这会造成一个语法错误;这个JavaScript变量名中不允许使用字符。不过,这是可行的:
var foobar = new Object;
var foo=新对象;
var foo.bar=新对象
因为和以前一样的原因,这行不通。改用这个:
// using the `Object` constructor
var foo = new Object;
foo.bar = new Object;
// or just use an object literal:
var foo = {
'bar': {}
};
如果我像上面那样创建这两个对象,它们之间是父子关系还是完全独立的实体
bar和foo都是对象,但bar是foo的属性
这会造成一个语法错误;这个JavaScript变量名中不允许使用字符。不过,这是可行的:
var foobar = new Object;
var foo=新对象;
var foo.bar=新对象
因为和以前一样的原因,这行不通。改用这个:
// using the `Object` constructor
var foo = new Object;
foo.bar = new Object;
// or just use an object literal:
var foo = {
'bar': {}
};
如果我像上面那样创建这两个对象,它们之间是父子关系还是完全独立的实体
bar和foo都是对象,但bar是foo的属性
如果我声明一个对象如下:
var foo.bar = new Object;
var foo.bar = new Object;
这会自动使foo成为一个对象吗
不,这是一个语法错误
SyntaxError:意外标记
如果不是,并且我希望foo和foo.bar都是对象,那么我需要使用以下代码:
var foo = new Object;
var foo.bar = new Object;
var foo = new Object;
var foo.bar = new Object;
不,这又是一个语法错误。你应该使用
var foo = new Object;
foo.bar = new Object;
但现在使用更为普遍
var foo = {
bar: {
}
}
如果我像上面那样创建这两个对象,它们之间是父子关系还是完全独立的实体
它们是完全独立的实体。它们之间唯一的联系是foo持有对bar的引用。其他东西可以很容易地引用到bar
var baz = foo.bar;
// Now baz and foo.bar are both pointing to the same object
alert(baz === foo.bar); // true;
baz.attr = 1;
alert(baz.attr); // 1
alert(foo.bar.attr); // 1
delete foo.bar; // delete foo's reference to bar
alert(baz.attr); // still shows 1
alert(foo.bar.attr); // error, because we deleted `bar`.
如果我声明一个对象如下:
var foo.bar = new Object;
var foo.bar = new Object;
这会自动使foo成为一个对象吗
不,这是一个语法错误
SyntaxError:意外标记
如果不是,并且我希望foo和foo.bar都是对象,那么我需要使用以下代码:
var foo = new Object;
var foo.bar = new Object;
var foo = new Object;
var foo.bar = new Object;
不,这又是一个语法错误。你应该使用
var foo = new Object;
foo.bar = new Object;
但现在使用更为普遍
var foo = {
bar: {
}
}
如果我像上面那样创建这两个对象,它们之间是父子关系还是完全独立的实体
它们是完全独立的实体。它们之间唯一的联系是foo持有对bar的引用。其他东西可以很容易地引用到bar
var baz = foo.bar;
// Now baz and foo.bar are both pointing to the same object
alert(baz === foo.bar); // true;
baz.attr = 1;
alert(baz.attr); // 1
alert(foo.bar.attr); // 1
delete foo.bar; // delete foo's reference to bar
alert(baz.attr); // still shows 1
alert(foo.bar.attr); // error, because we deleted `bar`.
我喜欢这样看,Javascript中的对象与关联数组(又称哈希表、字典)完全相同,其中每个键都是字符串,每个值可以是任何类型,包括函数。因此,您的代码与以下代码完全相同:
var foo = {};
foo["bar"] = {};
甚至:
var foo = { bar: {} };
var foo = {"bar": {}};
我喜欢这样看,Javascript中的对象与关联数组(又称哈希表、字典)完全相同,其中每个键都是字符串,每个值可以是任何类型,包括函数。因此,您的代码与以下代码完全相同:
var foo = {};
foo["bar"] = {};
甚至:
var foo = { bar: {} };
var foo = {"bar": {}};
事实上,文本更为优先,不会出错,因为foo还没有定义,事实上,它已经在OP的示例中定义过了;它将抛出一个Syntaxer错误,因为。JavaScript变量名中无效的字符。只应为var foo={bar:{};因为{}与new Object相同。事实上,文本更可取。它不会出错,因为没有定义foo。事实上,它是在OP的示例中定义的;它将抛出一个Syntaxer错误,因为。JavaScript变量名中无效的字符。只应为var foo={bar:{};因为{}与新对象相同。感谢所有人的回答,特别是关于要使用的正确文字符号。感谢所有人的回答,特别是关于要使用的正确文字符号。