首页 > 想请教下,这个函数里面只能用eval才能生成新的对象,不用eval就没法生成对象,不用eval函数怎样实现处理对象?

想请教下,这个函数里面只能用eval才能生成新的对象,不用eval就没法生成对象,不用eval函数怎样实现处理对象?

<script type="text/javascript">    
                    
                        function test(path){
             
                            var arr= path.split(".");
                                var ns='';
                            for(var i=0;i<arr.length;i++){
                                
                                    if(i>0){ ns+='.';}
                                         
                                    ns+= arr[i];
                                /*    ns = new Object();
                                 */
                                 
                                 eval(" {"+ns+"=new Object();}");
                            }
                                 
                         
                        }
                            test("AAA.bbb");
                         alert(AAA.bbb); //为啥只能用eval这里才能正常显示对象?
        </script>

假如这样写 结果就是AAA未定义

<script type="text/javascript">    
                    
                        function test(path){
             
                            var arr= path.split(".");
                                var ns='';
                            for(var i=0;i<arr.length;i++){
                                
                                    if(i>0){ ns+='.';}
                                         
                                    ns+= arr[i];
                                    ns = new Object();
                                
                                 
                            /*     eval(" {"+ns+"=new Object();}"); */
                            }
                                 
                         
                        }
                            test("AAA.bbb");
                         alert(AAA.bbb); //为啥只能用eval这里才能正常显示对象?
        </script>

用eval的话 最后就可以把传递的参数最终处理为对象,
有无不用eval 把传递的参数处理为对象?谢谢了


楼上已说的很清楚了。另吐槽: 你把 path 拆开又拼起来,目的是什么?


我可能要说句不太客气的话:题主你有点「思而不学」了。先系统认真地看一遍 JavaScript 的入门书籍,然后有疑问再问,会好一些。

我觉得你可能连「变量」这个概念都没理解。第二个例子里 ns 是一个局部变量。本来 ns 指向一个字符串,ns = new Object() 后就指向新创建的对象。


//第一个循环执行的代码如下

var ns="";
ns="AAA";
//eval("{AAA=new Object();}");相当于执行{AAA=new Object()}; 也就是执行 AAA=new Object();
AAA=new Object();
ns="AAA.bbb";
//eval("{AAA.bbb=new Object();}");相当于执行{AAA.bbb=new Object()}; 也就是执行 AAA.bbb=new //Object();
AAA.bbb=new Object();
alert(AAA.bbb); 
//你说是什么内容了?

//第二个循环执行如下

var ns="";
ns="AAA";
ns=new Object();
ns="AAA.bbb";
ns=new Object();
alert(AAA.bbb);
//你说会出来什么内容

//搞技术的要务实 多看书 多动脑 。

【热门文章】
【热门文章】