标签:规则 方式 表达式求值 操作 home 技术 fine class 名称
举例:
var obj = new Object(); obj["home addr"]="Tianjin"; obj["!@#$%"]="!@#$%"; obj[""]="empty string"; obj[" "]="string contains only space";
在控制台中查看如下:
纯数字属性名的使用比较特殊,可以通过对象字面量和obj[number]的形式为对象添加纯数字属性,解释器会自动将数字转换为数字字符串。
定义实例:
var obj = {1:"first"} obj[2]="second"; obj["3"]="third";
以上三种为对象添加纯数字属性的方法是等效的,控制台查看如下:
读取的方式有两种:
需要注意,采用obj.number的方式读取纯数字属性名称时浏览器会报错,如下
布尔属性名和纯数字属性名有着相似的行为,如下
采用obj[propertyName]的形式读取或创建对象属性时,解释器首先会检查propertyName是值类型字面量还是用户定义的变量,如果propertyName是值类型的字面量,则解释器自动将其转换为字符串后再读取或创建属性,如obj[1],obj[true]会被转换成obj["1"]、obj["true"].
如果propertyName是变量名称(或者是表达式),则解释器会读取变量内容(或对表达式求值),如果变量的值是字符串,则直接读取属性,如果是其他类型的数据,则转换为字符串后再读取属性。举例如下:
定义对象:
定义变量:
读取属性:
更特殊的,为obj添加undefined属性:
使用未初始化的变量c读取obj的undefined属性:
由于c没有初始化,所以将c转换为字符串的结果是“undefined”,而obj存在“undefined”属性。
标签:规则 方式 表达式求值 操作 home 技术 fine class 名称
原文地址:http://www.cnblogs.com/canger/p/6382944.html