如何在hasOwnProperty中使用多个值

Fre*_*nda 1 javascript

说我有这个对象:

myObj = {
    level1: {
        level2: {
            name: 'Frank'
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

如何使用hasOwnProperty()检查对象的多个深度.像这样的东西有效:

if (myObj.hasOwnProperty('level1') {
    if (myObj.hasOwnProperty('level2') {
        if (myObj.hasOwnProperty('name') {
            console.log(myObj.level1.level2.name)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望有类似的东西:

myObj.hasOwnProperty(['level1', 'level2', 'name']);
myObj.hasOwnProperty('level1.level2.name);
Run Code Online (Sandbox Code Playgroud)

我的目标是,console.log(myObj.level1.level2.name)如果不是所有的属性都存在,那么你可以通过提供替代hasOwnProperty也来回答这个问题.

Nin*_*olz 6

您可以对对象进行闭合并检查键.

const check = o => k => [o.hasOwnProperty(k), o = (o || {})[k]][0];

var myObj = { level1: { level2: { name: 'Frank' } } };

console.log(['level1', 'level2', 'name'].every(check(myObj)));
console.log(['level1', 'level3', 'name'].every(check(myObj)));
Run Code Online (Sandbox Code Playgroud)