这样可以吗?
myObj = {};
myObj['4a56546s6d']
或者键必须以字母开头,如:
myObj = {};
myObj['x4a56546s6d']
我可以混合使用吗:
myObj = {};
myObj['x4a56546s6d']
myObj['4a56546s6d']
我问这个问题是因为有些东西(例如在HTML中的ID)必须以字母开头。目前我使用的是第三个版本,而fireBug会把以数字开头的键标记为蓝色。
这样可以吗?
myObj = {};
myObj['4a56546s6d']
或者键必须以字母开头,如:
myObj = {};
myObj['x4a56546s6d']
我可以混合使用吗:
myObj = {};
myObj['x4a56546s6d']
myObj['4a56546s6d']
我问这个问题是因为有些东西(例如在HTML中的ID)必须以字母开头。目前我使用的是第三个版本,而fireBug会把以数字开头的键标记为蓝色。
如果使用[string]
访问键,则可以使用任何键,甚至带有空格的键。以下所有内容都是有效的:
myObj['key with space']
myObj['12345']
但是,如果你想使用点 .
操作符来访问键,则该键必须是一个有效的标识符,这意味着它们不能以数字开头或包含空格。
使用点操作符可以访问不包含空格或特殊字符、以数字开头(不能用作变量名)的键中的值,否则你可以像关联数组中的键一样引用它们。
你可以使用任何想要的字符串作为键,但要记住键将是你放入内容的字符串表示形式。换句话说,它将被称为toString()。
看这里:
var myObj = {};
myObj[ 3 ] = "key is 3";
alert( myObj[ "3" ] ); //alerts "key is 3" because (3).toString() is "3"
//but an error will thrown when accessing by myObj.3
myObj[ {} ] = "key is {}"
alert( myObj["[object Object]"] ) // alerts "key is {}" because ({}).toString() is "[object Object]"
你可以覆盖toString()
方法,例如:
Object.prototype.toString = function(){ return "object"}
a = {};
a[ {} ] = "whatever";
alert( a["object"] ); // alerts "whatever" because as now toString() returns "object" from each created object
Object.prototype
方法,这太危险了。 - Patrick MmyObj.4a56546s6d
来访问数据,因为不允许使用数字作为标识符的开头。