定义了一个JS对象,如下:
var obj = {name:"",age:"",sex:""};
先第一次赋值:
obj.name = shang;
obj.age = 22;
obj.sex = male;
后由于要动态拿到对象的属性名,再为其赋值,故:
var dyn = $(this).context.id; //假设此时的dyn为name
obj.dyn = $(this).context.value;
但此时obj.name的值仍为第一次赋的值,并不是动态获取后的。猜测原因是对象obj新增加了一个属性dyn,其值为动态获取到的值。
要为原name赋上新的值,需要这样做:
obj[dyn] = $(this).context.value;
成功。
疑问:但是obj不是数组啊,为什么这样可以?
--------------------------------------------------------分割线--------------------------------------------------------
2019年3月2日更新:
在看到EL表达式时,有这样的说法:
如果EL表达式的结果是一个带有属性的对象,则可以利用“[]”或者“.”(这是个点)运算符来访问其属性,如:
${object["propertyName"]}
${object.propertyName}
但是,如果propertyName不是有效的Java变量名,则只能用[]运算符,如访问隐式对象标题中的HTTP的accept-language,只能使用[]运算符,如果运用“.”运算符访问它,将会导致异常。