Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我需要更好地理解Javascript对象的基本性质_Javascript_Object - Fatal编程技术网

我需要更好地理解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:{};因为{}与新对象相同。感谢所有人的回答,特别是关于要使用的正确文字符号。感谢所有人的回答,特别是关于要使用的正确文字符号。