如图所示,'2':'a','3':'b','length':8,'push':Array.prototype.push这里2,3,length,push都是obj的属性,而且都是字符,为什么length属性可以使用obj.length访问而2,3,却不行?然后麻烦详细说下属性名带引号和不带引号的区别??
用数字做建名是建立一个类数组不是么?
追答如果所有键名都是数字,那就直接建立一个数组了。但是这种数字和字母混杂的情况,很容易引起混淆,而且会造成阅读困难,本来属性名的作用就是帮助代码使用者理解后面值的作用(比如length、push都具有这种作用),但数字(2、3)却无法直观表达意思。我所说的避免的就是指后面这种情况。
其实也可以在对象中包含数组啊,这样层次更加分明。比如:
var obj = {通过[]操作符为对象添加属性时,属性名称可以是任何字符串(包括只包含空格的字符串和空字符串);
通过.操作符为对象添加属性时,属性名称必须是合法的标识符名称;
如果属性名包含非法的标识符字符,则只能采用obj[“propertyName”]的形式;
如果属性名是合法的标识符,读取时即可以采用obj.propertyName,也可以采用obj[“propertyName”]的形式;
纯数字属性名的使用比较特殊,可以通过对象字面量和obj[number]的形式为对象添加纯数字属性,解释器会自动将数字转换为数字字符串。
追问感谢