如何在c++中动态获得对象的名称

如何在c++中动态获得对象的名称,第1张

递归经常碰到的问题了。

出问题的地方是 Run(temp,path);

既然是递归的调用 而且这个函数本身 有 return 值 那么 你应该在

调用 Run(temp,path);的时候 接收他的返回值

应该写成 value = Run(temp,path);

1 现在你可以设成 局部变量 var value 了。

之所以出现undefined就是因为

return value 这行代码 就执行了 1次 也就是 第一个执行 var test=Run(myjson,mypath);的时候

这个时候 value 变量还没有定义出来, value是在 最后一次执行 Run(temp,path);的时候才定义的,而需要把这个 返回出来 并接收 才有效。

2 json=json[path[0]],

这个地方 不会报错 你是写错了代码

你如果 把这个地方 写成 json=json[path[0]],

那么下面 Run(temp,path); 是不是也应该写成 Run(json,path);呢?

这样就不会报错。

3 在javascript里 数组和 对象 都是属于 引用类型的, 这是为了 节省内存空间。

其实道理简单, var a = {b:1} 这个时候 a变量里面 存储的是 保存这个 对象的内存地址,

打个比方 这个对象是一个宝箱 他是隐藏在内存的, a变量里面是打开这个宝箱的钥匙和地图

那么 b=a的时候 只是 复制了 钥匙和地图, 宝箱还是一个, 所以这个时候 a 和b 是指同一个对象的。

最后代码 修改后是这样

function Run(json,path){

if(pathlength<=1){

var value=json[path[0]]; // 如果这里换成var value=json[path[0]]结果是undefined

} else {

var temp;

json=json[path[0]]; //这里为什么不能用 json=json[path[0]]

pathsplice(0,1);

value = Run(json,path);

//argumentscallee(temp,path);

}

return value;

}

var myjson={a:1,b:{c:{e:3},d:4}};

var mypath=['b','c','e'];

var test=Run(myjson,mypath);

alert(test);

以上就是关于如何在c++中动态获得对象的名称全部的内容,包括:如何在c++中动态获得对象的名称、如何让一个对象实例调用自身的该对象的方法函数"mymethod、Spring系列(一)Spring MVC bean 解析、注册、实例化流程源码剖析等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9762384.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存