let obj = { name: '张三', age: 18, sex: 'male' } let newobj = Object.create(obj); //新建一个对象继承obj newobj.hobby = 'learning'; newobj.school = '家里蹲'; for (let i in newobj) { console.log(i); //直接遍历 } for (let i in newobj) { if (newobj.hasOwnProperty(i)) { //只遍历本身的属性 console.log(i); } }
那么,获取原型链上的属性就可以自然封装出来了
1 2 3 4 5
functionhasPrototypeProperty(obj,name){ return !obj.hasOwnProperty(name)&&(name in obj) //保证不是本身属性那么就是继承属性了 } console.log(hasPrototypeProperty(newobj,'name'))//true