[发明专利]属性获取方法和装置有效
申请号: | 202110594722.4 | 申请日: | 2021-05-28 |
公开(公告)号: | CN113326031B | 公开(公告)日: | 2023-08-22 |
发明(设计)人: | 张展宇 | 申请(专利权)人: | 网易(杭州)网络有限公司 |
主分类号: | G06F8/20 | 分类号: | G06F8/20 |
代理公司: | 北京博浩百睿知识产权代理有限责任公司 11134 | 代理人: | 赵昀彬 |
地址: | 310000 浙江省杭州*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 属性 获取 方法 装置 | ||
本发明公开了一种属性获取方法和装置。其中,该方法包括:获取源对象和目标属性,其中,源对象包含多个属性,多个属性采用多层嵌套结构,目标属性为多个属性中待获取属性值的属性;按照多个属性的层级关系,通过代理对象依次读取每个属性的属性值,并将当前读取到的属性值与目标属性对应的目标条件进行比较,确定是否返回当前读取到的属性值;获取代理对象返回的属性值,得到目标属性的属性值。本发明解决了相关技术中获取深层级的对象属性会抛出异常的技术问题。
技术领域
本发明涉及计算机领域,具体而言,涉及一种属性获取方法和装置。
背景技术
在JavaScript(简称为JS)语言中,由于属性链中间的任意一个属性值为undefined或null,都会导致程序抛出异常,因此,读取任意深层级的对象属性会抛出错异常。例如,对于一个对象a={b:{c:[{d:10}]}},当需要读取最里面的d属性值时,可以这样写:a.b.c[0].d。但是假如a对象是服务器接口返回的,由于某种原因,c属性值为null,即返回的对象是a={b:{c:null}},因为前端不知道会返回这种缺失属性的对象,如果继续使用属性链的方式读取里面的d属性值a.b.c[0].d,则会抛出异常Uncaught TypeError:Cannotread property'd'of null。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种属性获取方法和装置,以至少解决相关技术中获取深层级的对象属性会抛出异常的技术问题。
根据本发明实施例的一个方面,提供了一种属性获取方法,包括:获取源对象和目标属性,其中,源对象包含多个属性,多个属性采用多层嵌套结构,目标属性为多个属性中待获取属性值的属性;按照多个属性的层级关系,通过代理对象依次读取每个属性的属性值,并将当前读取到的属性值与目标属性对应的目标条件进行比较,确定是否返回当前读取到的属性值;获取代理对象返回的属性值,得到目标属性的属性值。
可选地,将当前读取到的属性值与目标属性对应的目标条件进行比较,确定是否返回当前读取到的属性值包括:将当前读取到的属性值对应的第一属性名称与目标属性的第二属性名称进行比较;当第一属性名称与第二属性名称相同时,确定返回当前读取到的属性值。
可选地,当第一属性名称与第二属性名称不同时,该方法还包括:基于当前读取到的属性值,生成新的代理对象;通过新的代理对象读取每个属性的属性值,并将新读取到的属性值与目标属性对应的目标条件进行比较,确定是否返回新读取到的属性值。
可选地,基于当前读取到的属性值,生成新的代理对象包括:创建新对象;将当前读取到的属性值克隆到新对象中;更新该新对象的预设属性的属性值为当前读取到的属性值;基于更新后的新对象创建新的代理对象。
可选地,基于源对象和目标属性的第二属性名称,创建代理对象。
可选地,通过代理对象包含的预设函数拦截当前读取到的属性值,并将当前读取到的属性值与目标条件进行比较,确定是否返回当前读取到的属性值,其中,预设函数为代理对象的行为对象参数包含的属性。
可选地,基于目标属性的第二属性名称构建预设函数。
根据本发明实施例的另一方面,还提供了一种属性获取装置,包括:第一获取模块,用于获取源对象和目标属性,其中,源对象包含多个属性,多个属性采用多层嵌套结构,目标属性为多个属性中待获取属性值的属性;确定模块,用于按照多个属性的层级关系,通过代理对象依次读取每个属性的属性值,并将当前读取到的属性值与目标属性对应的目标条件进行比较,确定是否返回当前读取到的属性值;第二获取模块,用于获取代理对象返回的属性值,得到目标属性的属性值。
根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,计算机可读存储介质包括存储的程序,其中,在程序运行时控制计算机可读存储介质所在设备执行上述的属性获取方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于网易(杭州)网络有限公司,未经网易(杭州)网络有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110594722.4/2.html,转载请声明来源钻瓜专利网。