当围绕多个{}
形式的对时,大括号(integer:string
)在变量声明中做了什么?
例如,这里的含义是什么?
char = {0:'(',3:') ',6:' - '};
在这种情况下,它来自以下电话号码格式化脚本:
function formatPhone(obj) {
var numbers = obj.value.replace(/\D/g, ''),
char = {0:'(',3:') ',6:' - '};
obj.value = '';
for (var i = 0; i < numbers.length; i++) {
obj.value += (char[i]||'') + numbers[i];
}
}
我认为定义char
的行是导致它失败的行。
答案 0 :(得分:3)
这是一个Javascript对象。更好的缩进,它看起来像这样:
char = {
0: '(',
3: ') ',
6: ' - '
}
它表示您正在创建一个对象,其中属性0
,3
和6
设置为给定值。然后,使用char[i]
访问属性,除非定义了属性,否则返回null
- 因此对于除0,3和6之外的所有i
,它将默认为{{ 1}}。对于0,3和6,它将采用相关的字符串。
好吧,我想我弄清楚什么是“不起作用”,但在我确定之前,我还需要你解释一下这意味着什么。
这一行:
''
如果未定义obj.value += (char[i]||'') + numbers[i];
,将在字符串中插入undefined
,并且仅为numbers[i]
= 0,3或6定义numbers[i]
。更改行对此:
i
它应该有用。
答案 1 :(得分:1)
它会创建一个对象:
obj = {0:'(',3:') ',6:' - '};
你的对象里面有两个元素,分别是0,3和6.你可以访问它们obj [0],obj [3]和obj [6]
或者您可以像在示例中那样在循环中访问它们
答案 2 :(得分:1)
这是一个Javascript对象。
除了使用构造函数创建对象之外,您还可以 使用对象初始值设定项创建对象。使用对象初始化器 有时也称为使用文字符号创建对象。 &#34;对象初始化器&#34;与C ++使用的术语一致。
使用对象初始值设定项的对象的语法是:
var obj = { property_1: value_1, // property_# may be an identifier... 2: value_2, // or a number... // ..., "property n": value_n }; // or a string
其中obj是新对象的名称,每个
property_i
都是 标识符(名称,数字或字符串文字)和每个标识符value_i
是一个表达式,其值分配给property_i
。
本文的其余部分可用here。