动态获取成员变量
写代码的的时候遇到了一个需求
- ajax的请求结果存在两个类Level和Status
- Level的中是levelId,而Status中是statusId
- 想用一个函数根据Id来添加一些DOM,但是不确定进来的是Level还是Status
代码如下
1 |
|
可以通过[key]动态获取成员变量的原因
结合文章[JS中的for…in…][link01]和[JS中的传值和传址][link02]可以知道,JS中所有的Object都是Key-Value形式的,即时是Array也不例外
所以在Java等语言中常使用[]从List数组中取值不同,[]在JS中本质是从某个Key取值,相当于Java中的 map.get(Key)
其实类似的用法在OC中也存在,OC中的NSDictionary是可以通过[Key]取值的
1 | NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:@"first",@"1",@"second",@"2", nil]; |
JS中存在不存在反射
在Java和OC中都存在一个很重要的概念叫做反射,是动态机制的必需品,那么JS有没有这个概念呢?
反射的实质其实就是在于拿到成员变量或者函数的字符串名,又是由于S中所有的Object都是Key-Value形式的,所以说Object的Key是很容易拿到的,所以就不存在反射这个概念了