这篇文章主要介绍“JavaScript如何根据属性获取属性的父级”,在日常操作中,相信很多人在JavaScript如何根据属性获取属性的父级问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JavaScript如何根据属性获取属性的父级”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

话不多说上代码

functionmObj(Obj){varobj=newProxy(Obj,{set:function(obj,pro,val,Pro){if(typeofval=='object'){val.parent=Proval=mObj(val)}obj[pro]=valreturnval}})returnobj}

我们只需要用 mObj 方法来初始化我们需要代理的对象

varobj=mObj({})向其添加属性

注!只能添加空对象,否则其属性将失去代理

obj.a={}obj.b={}obj.a.aa={}obj.b.bb={}console.log(obj)//Proxy{a:Proxy,b:Proxy}

Proxy就是代理对象

尝试使用obj.parent获取它的父级

console.log(obj.a.parent,obj.b.parent)//Proxy{a:Proxy,b:Proxy}Proxy{a:Proxy,b:Proxy}console.log(obj.a.aa.parent,obj.b.bb.parent)//Proxy{parent:Proxy,aa:Proxy}Proxy{parent:Proxy,bb:Proxy}

可以看到已经成功获取了属性的父级那么它可以用来干什么呢?

1. 定位父级

obj.a.parent//Proxy{a:Proxy,b:Proxy}2. 生成兄弟属性

varp=obj.ap.parent.c={}obj.c//Proxy{parent:Proxy}3. 检测是否为兄弟属性

varp1=obj.a.parent,p2=obj.b.parentvarp3=obj.a.aa.parent,p4=obj.b.bb.parentp1==p2//truep3==p4//false4. 定位最高父级

p5=obj.a.aawhile(p5.parent){p5=p5.parent}p5//Proxy{a:Proxy,b:Proxy}p5==obj//true

到此,关于“JavaScript如何根据属性获取属性的父级”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!