【发布时间】:2016-09-08 05:23:24
【问题描述】:
给定一个 JS 对象:
var obj = {
a: {
b: {
c: {}
}
}
};
如何将obj.a.b 转换为字符串"obj.a.b" 以计算已使用的对象数(3)?在这种情况下obj.a.b:3. 我试过''+obj.a.b、uneval()、toSource()、toString()、for...in、Object.key().length,但这不是我想知道的。
我想这是不可能的……但不确定。
例如我为什么要:
function h (o) {
let a = o.split('.');
if (a.length > 2) {
alert('not allowed'); // because obj.a.b > 2
return;
} else {
// because obj.a == 2 -> ok. process with obj.a ..
}
}
h(obj.a.b);
【问题讨论】:
-
所以您希望能够输入
obj.a.b并返回"obj.a.b"? -
obj.a.b这是什么意思?你有一些访问它的代码吗?您是否只想找到b的深度是多少?这是从哪里来的,为什么还要计算引用? -
@Mike:是的,没错
-
@hg95 好的,但是为什么你想这样做?只是好奇还是你想解决什么问题?因为如果是后者,确实看起来是个 XY 问题。
-
你可以用Proxies 做一些疯狂的恶作剧来获得至少每个财产的访问权,但这肯定是一些恶作剧。不是你想要的真实世界代码。
标签: javascript string