在做项目的时候,遇到一个情景:有多个按钮,点击不同的按钮实现添加不同的echars图表。然后在一开始的时候我采用的是给每个按钮设定不同的class。再根据选择器绑定事件,调用方法,实际上方法都一样,但是就有一个setOption ( option) 中的这个option不同就像下图那样
(至于为什么外面选择器用的jQuery 里面的却用原生的……咳咳,因为不知道为什么echart用jQuery选择器会报错,而且jQuery在添加事件,增删class方面实在是太方便了)
后来经过交流群里面的大神指点,把option的划分放在标签自定义属性中,然后根据属性值去调用不同的option。一时我感觉前方万丈光芒,豁然开朗,刷刷刷砍掉大部分代码,改成这样:
兴高采烈一运行,懵逼了,报错了! 然后本能的console 一下typeof 发现数据类型是string。第一反应是想着怎么去将字符串转为对象。想到了eval() ,想到了JSON.parse()
因为我记得有一句话叫eval() is evil 所以我就先试试JSON.parse() ,但是不行;又用了eval() 还是不行;但是数据类型明确是转换过来了,成为了 Object;
为什么呢?
因为他们虽然同名同姓,但不是同一个对象啊!
然后,回到起点了,怎么通过这个字符串去匹配同名的对象呢?
(重点来了)
突然想起来了一个知识点: 属性访问表达式!
访问一个属性,有两种格式:
1、也是最常用的一种 表达式.标识符
2、本文要介绍的用法 表达式[表达式]
用书上的话来说:
ps: 博客生手,写的不好,请多多见谅,有写的错误的地方请一定指正,谢谢! 原创手打,转载注明