这个初始化做了什么?= {}

Fab*_*bii 1 javascript

我已经看到了以下内容:

var field = {};
field.tf = $("#textfield");
field.date = $("td#CurrentDate");
field.name = $("input#myname");
Run Code Online (Sandbox Code Playgroud)

初始化var field = {}做了什么?它是否创建了一个通用对象(字段),可以在其上动态设置属性(field.tf)?

zzz*_*Bov 11

JavaScript有许多超出标准不同的文字语法Number,String,Boolean通用于其他语言:

foo = {};
Run Code Online (Sandbox Code Playgroud)

是相同的:

foo = new Object();
Run Code Online (Sandbox Code Playgroud)

foo = [];
Run Code Online (Sandbox Code Playgroud)

是相同的:

foo = new Array();
Run Code Online (Sandbox Code Playgroud)

foo = /foo/;
Run Code Online (Sandbox Code Playgroud)

是相同的:

foo = new RegExp('foo');
Run Code Online (Sandbox Code Playgroud)

这些文字语法有自己的怪癖和细微差别.对于对象,键值对用逗号分隔,键和值用冒号字符分隔:

foo = {
    bar: 'baz',
    fizz: 'buzz'
};
Run Code Online (Sandbox Code Playgroud)

相当于:

foo = new Object();
foo.bar = 'baz';
foo.fizz = 'buzz';
Run Code Online (Sandbox Code Playgroud)

对于数组,数组成员只是以逗号分隔:

foo = ['bar', 'baz'];
Run Code Online (Sandbox Code Playgroud)

相当于:

foo = new Array();
foo.push('bar', 'baz');
Run Code Online (Sandbox Code Playgroud)

请注意,对于数组,构造函数有一个缺陷.new Array(1, 2, 3)相当于[1, 2, 3],但new Array(3)不等价[3],它相当于[undefined, undefined, undefined](一个大小为3但没有成员的数组).

这种方便的初始化结构,以及将对象和数组嵌套在一起的能力是导致JSON数据交换格式形式化的原因