Javascript对象-键以数字开头,允许吗?
允许这样做吗Javascript对象-键以数字开头,允许吗?,javascript,jquery,arrays,object,key,Javascript,Jquery,Arrays,Object,Key,允许这样做吗 myObj = {}; myObj['4a56546s6d'] 或者密钥必须以如下字母开头: myObj = {}; myObj['x4a56546s6d'] 我可以把两者混合起来吗 myObj = {}; myObj['x4a56546s6d'] myObj['4a56546s6d'] 我这样问是因为有些东西(例如HTML中的ID)必须以字母开头。目前,我已将钥匙和fireBug标记为蓝色(以数字开头)。请参见本页: JavaScript标识符必须以字母、下划线(_)或美元
myObj = {};
myObj['4a56546s6d']
或者密钥必须以如下字母开头:
myObj = {};
myObj['x4a56546s6d']
我可以把两者混合起来吗
myObj = {};
myObj['x4a56546s6d']
myObj['4a56546s6d']
我这样问是因为有些东西(例如HTML中的ID)必须以字母开头。目前,我已将钥匙和fireBug标记为蓝色(以数字开头)。请参见本页:
JavaScript标识符必须以字母、下划线(_)或美元符号($)开头;后续字符也可以是数字(0-9)。因为JavaScript是区分大小写的,所以字母包括字符“A”到“Z”(大写)和字符“A”到“Z”(小写)
您可以这样使用它,但是您将无法使用myObj.4a56546s6d访问数据,因为不允许以数字开头标识符。如果您的键(属性名)是字符串文字,那么将数字作为其第一个字符是完全有效的
有关JS中有效密钥的更多信息,请参见问题的答案。如果使用
[string]
访问密钥,您可以使用任何密钥,甚至是带有空格的密钥。所有这些都是有效的:
myObj['key with space']
myObj['12345']
但是,如果要使用点
运算符访问密钥,则密钥必须是有效标识符,这意味着它们不能以数字开头或包含空格 通过点运算符,您可以访问不包含空格或特殊字符的键的值,以及从数字开始的单词(即不能用作eg变量名的单词),否则您可以像关联数组中的键一样对它们进行任何引用
您可以使用任意键,但请记住,该键将是您输入内容的字符串表示形式。澄清-将被称为toString()
看:
您可以重写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
如果它不被允许,你会得到一个错误。非常说明性的例子,+1。但是孩子们,不要在家里重写
Object.prototype
方法。太危险了。
Object.prototype.toString = function(){ return "object"}
a = {};
a[ {} ] = "whatever";
alert( a["object"] ); // alerts "whatever" because as now toString() returns "object" from each created object