내가 지속적으로중첩 된 객체 참조에 대한 속기가 있습니까? 중첩 된 객체와 자바 스크립트를 사용하여
const configDoc = Config && Config.Settings && Config.Settings.Group &&
Config.Settings.Group.theThingIReallyWanted
같은 물건을하고 중첩 된 참조 것을 얻기위한 속기이 있습니까? 시도의 catch 블록을 사용
내가 지속적으로중첩 된 객체 참조에 대한 속기가 있습니까? 중첩 된 객체와 자바 스크립트를 사용하여
const configDoc = Config && Config.Settings && Config.Settings.Group &&
Config.Settings.Group.theThingIReallyWanted
같은 물건을하고 중첩 된 참조 것을 얻기위한 속기이 있습니까? 시도의 catch 블록을 사용
가 더 속기 없지만 당신이 조건을 체인 피하기 위해 시도 캐치를 사용할 수 AFAIK ...
var test = { a: '', b: { c: {} } }
try {
return test.b.c;
} catch (e) {
return undefined;
}
힘내라 :
은 도움이 될 수 :
try {
return Config.Settings.Group.theThingIReallyWanted;
} catch(e) {
// something is undefined
}
일부 값이 정의되어 있는지 재귀 적으로 확인하는 쉬운 방법은 없습니다.
이것은 성능에 미친 영향을 미칠 수 있습니다. –
모든 것을 끝내고 모든 개체에 확장을 추가 할 수 있습니다. 나는 사람들이 확장 된 객체 기능을 위해 Object 프로토 타입을 사용하여 싫어하는 경향이 있지만이 작업을 수행하는 것보다 쉬운 것은 아무것도 없다는 것을 알고있다. 게다가 이제는 Object.defineProperty 메쏘드 사용이 가능합니다.
if(obj.has("some.deep.nested.object.somewhere"))
Here's a jsfiddle 그것을 테스트하기 위해, 특히 당신이를 수정하면 나누기 일부 jQuery를 포함
Object.defineProperty(Object.prototype, "has", { value: function(needle) {
var obj = this;
var needles = needle.split(".");
for(var i = 0; i<needles.length; i++) {
if(!obj.hasOwnProperty(needles[i])) {
return false;
}
obj = obj[needles[i]];
}
return true;
}});
이제 모든 개체의 모든 속성에 대한 테스트하기 위해 당신은 간단하게 할 수있는 Object.prototype은 속성이 열거 가능 해져서 직접적으로 나타납니다. 이것은 타사 라이브러리에서 잘 작동합니다.
나는 네가 여기서 한 짓을 좋아해. 솔직히 말해서 나는 이것을 할 새로운 ES6 ES7의 약자를 기대하고 있었다. 나는 프로토 타입을 사용하는 아이디어에 열중하지 않지만 그것은 아마도 내 자연스러운 성향 일 것이다. – JoshJoe
당신은 주어진 키를 반복하고 값 또는 기본값으로 개체 중 하나를 반환 coould. 나중에 마지막 속성을 반환합니다.
나는 어쩌면 이미 어딘가에서 비슷한 대답을 보았다고 느낄 수도있다. :) – Icepickle
@Icepickle, 네 느낌이 맞지만 질문은 가볍게했다. 다른. –
하지 언어의 일환으로
그러나 실제로는 쓰기가 어렵지 않습니다. – Icepickle
그 속성 중 누군가가 존재하지 않으면'undefined'를 반환하겠습니까? 그것이 당신이 얻게 될 것이기 때문입니다. 가능하면 빈 객체를 반환하는 것이 좋을 것입니다 :'return (((Config || {}), Settings || {}) .Group || {}) theThingIReallyWanted || {});' – Chris