记录: js中使用eval函数将string字符串反射为对象并赋值

news/2024/7/19 14:18:42 标签: js, 字符串

有时候在写代码的时候为了使封装的函数更简单更实用,在调用对象并赋值的时候,通常写法都是需要一大堆的js判断,然后有了这个方法,一行代码就可以完事儿。特此总结记录一下.

方法如下:

eval( ' ( that.page.'+et2+'.show=false) ' );

比如有如下对象:

需要更改r1值的时候就是obj.a.items.other.r1=1;

需要更改name值的时候就是obj.a.items.name='zhangsan';

这些写法又长还不能统一在一个函数里调用。

let obj = {
            a:{
                show:false,
                items:{
                    name:'',
                    age:'',
                    sex:'',
                    other:{
                        r1:'',
                        r2:'',
                        r3:''
                    }
                }
            },
            ...
        }

封装一个函数,参数str是反射对象,val是要赋的值。

 function filedChange(str,val) {
     eval( ' ( obj.'+str+'=val) ' );
 }

想要更改obj对象中的任意一个值,直接调用函数:

filedChange('a.items.name','lisi');

打印输出正确:

具体的根据实际项目再进行更改。特此记录。


http://www.niftyadmin.cn/n/909063.html

相关文章

对百度输入法小米版的用户体验

用户界面: 在我自己的安卓手机上使用的输入法是百度输入法小米版,百度输入法小米版的用户界面是在百度输入法上精简的定制版,界面比较朴素简洁,使用起来比较方便,对于这点比较满意,按钮大小适合手指点击&am…

uniapp发布微信小程序问题记录(坑)

uniapp发布小程序过程中的问题,记录和坑1. 小程序发布为体验版无法连接本地调试服务2.云函数调用时,数据不更新以后再遇到问题了,会不定期更新本文章,谢谢!最近在使用uniapp开发小程序过程中,遇到了很多问题…

jQuery UI Autocomplete Combobox 配 ASP.NET DropDownList

0.引言 1.起因 一开始使用Autocomplete做了一个自动补全的文本框,如上图。后来因业务需要希望能在这个文本框的边上做个下拉列表按钮,一按就展开所有支持自动补全的选项。于是在网上搜索了好久,需找类似的插件,最后却回到了原点。…

uniapp使用element的问题

uniapp使用element中的message和Notification: message失效问题: 会报错:’error‘ is not undefind 一直在踩坑中… 解决如下: 在main.js中,给vue挂载实例: 将Vue.use() Vue.use(Message); Vue.use(No…

Linux系统CPU频率调整工具使用

现在的CPU耗电很大,按需调节CPU频率对普通桌面及移动设备节能有重要的意义,目前多数Linux发行版都已经默认启用了这个功能,但在一些像数据库,集群系统等特别需要CPU高性能的服务器环境中,Linux提供的这种对CPU频率调节…

vue中复用组件时出现的数据被覆盖问题~已解决

vue中复用组件时出现的数据被覆盖的问题~已解决 项目需要,写了一个能够复用的Cascader 组件,偶然间发现了一个久远的bug… 我此时的Cascader 组件并没有加懒加载。 demo复现: 在一个页面中放入两个一模一样的组件,第一个组件始终…

记录:uniapp中的uni-datetime-picker 在ios设备被遮盖覆盖的问题

偶然发现苹果手机上这个picker弹出来的时候,自己写的组件竟然覆盖在了这个picker的上面,遮挡住了picker,不是全部遮挡,是遮挡一部分。以为是z-index层级的问题,找问题找bug找了一上午,最后发现:…

hdu1215七夕节 筛选法求公因子和

hdu1215七夕节 数据量比较大&#xff0c;筛选法求公因子和即可。 #include <iostream> #include<cstdio> #include<string.h> #define maxn 500005 using namespace std; int ans[maxn]; int main() {int cas;int n;cin >> cas;memset(ans,0,sizeof(an…