我保持一點功能我打電話chainGet(obj, chain, default)
各地的情況就像這樣:
function chainGet(obj, chain, dflt) {
if (typeof chain === "string")
chain = chain.split(".");
var result = obj;
for (var i = 0; i < chain.length; i += 1) {
if (result === undefined)
break;
result = result[chain[i]];
}
return result === undefined? dflt : result;
}
例如:
> chainGet({ foo: 42 }, "foo")
42
> chainGet({ foo: 42 }, "bar", "x")
'x'
> chainGet({ foo: { bar: 42 }}), "foo.bar")
42
這甚至與陣列的工作原理:
> chainGet([{ foo: [42] }], [0, "foo", 0])
42
中當然,虛線訪問的長鏈是a code smell,所以謹慎應該是在使用它們時行使......但有時你拿到這樣做;)
這是Java還是javascript? – 2013-02-12 05:49:40
@MikhailVladimirov JavaScript,也標記爲JavaScript的問題。 – 2013-02-12 05:51:03