【技术实现步骤摘要】
【国外来华专利技术】无论目标ECMAScript对象是否为只读对象都代理目标ECMAScript对象
技术介绍
[0001]代理服务器是一种计算装置,它充当客户端装置(例如,其上的浏览器)与网络服务器之间的中介,以拦截客户端装置发起的向网络服务器请求资源的请求。代理服务器通常在将请求的或修改的资源传递给客户端装置之前分析和/或修改资源。
[0002]资源的一个示例是网页。网页包括多个元素。可以包括在网页中的元素的一个示例是ECMAScript对象。ECMAScript对象是符合ECMAScript标准的对象,该标准是由Ecma国际在ECMA
‑
262和ISO/IEC 16262中开发和维护的脚本语言规范。ECMAScript的示例实现包括但不限于和
[0003]尽管ECMAScript第六版(又名ES6)引入了代理对象作为修改对ECMAScript对象执行的操作的一种方式,但ES6和ECMAScript的后续版本对代理对象的使用施加了限制,以维护安全性和浏览器性能。例如,不可配置的ECMAScript对象的属性(即,configurable=false(可配置=假))不能通过代理包装ECMAScript对象被更改。在另一个示例中,本机浏览器方法(又名函数),例如document.addEventListener,不能接受代理对象作为参数或“this(这个)”上下文。因此,代理对象传统上对于钩子(hooking)浏览器操作没有用处。
技术实现思路
[0004]这里描述了各种方法,其中包括无论目标ECMAScript ...
【技术保护点】
【技术特征摘要】
【国外来华专利技术】1.一种无论目标ECMAScript对象是否为只读对象都代理所述目标ECMAScript对象的系统,所述系统包括:存储器;以及一个或多个处理器,耦合到所述存储器,所述一个或多个处理器被配置为:从ECMAScript引擎接收请求目标ECMAScript对象的请求,所述目标ECMAScript对象包括多个属性;定义一个或多个处理程序对象,所述一个或多个处理程序对象被配置为对所述目标ECMAScript对象的属性执行一个或多个相应的操作;确定所述目标ECMAScript对象是否包括至少一个只读属性,如果所述属性不能被重新定义,则所述目标ECMAScript对象的每个属性是只读的,如果所述属性能够被重新定义,则所述目标ECMAScript对象的每个属性不是只读的;至少部分地基于所述目标ECMAScript对象是否包括至少一个只读属性,从多个代理技术中选择用于代理所述目标ECMAScript对象的代理技术,所述多个代理技术包括第一代理技术和第二代理技术,其中所述目标ECMAScript对象包括至少一个只读属性指示所述第一代理技术将从所述多个代理技术中被选择,其中所述目标ECMAScript对象未包括至少一个只读属性指示所述第二代理技术将从所述多个代理技术中被选择;以及响应于请求所述目标ECMAScript对象的所述请求,使用选择的所述代理技术来代理所述目标ECMAScript对象,以生成代理的目标ECMAScript对象,所述代理所述目标ECMAScript对象包括:创建新的目标ECMAScript对象以替换所述目标ECMAScript对象,并且将至少所述一个或多个处理程序对象与所述新的目标ECMAScript对象相关联,以至少部分地基于所述目标ECMAScript对象包括至少一个只读属性而使用所述第一代理技术来生成所述代理的目标ECMAScript对象;或者将所述一个或多个处理程序对象应用于所述目标ECMAScript对象,以至少部分地基于所述目标ECMAScript对象未包括至少一个只读属性而使用所述第二代理技术来生成所述代理的目标ECMAScript对象。2.根据权利要求1所述的系统,其中所述一个或多个处理器被配置为:定义多个处理程序对象,所述多个处理程序对象被配置为对所述目标ECMAScript对象的属性执行多个相应的操作,所述多个处理程序对象包括所述一个或多个处理程序对象;以及使用最初没有只读属性的所述新的目标ECMAScript对象来启动对所述目标ECMAScript对象的代理,并且将所述多个处理程序对象中的至少一部分添加到所述新的目标ECMAScript对象,以至少部分地基于所述目标ECMAScript对象包括至少一个只读属性而使用所述第一代理技术来生成所述代理的目标ECMAScript对象。3.根据权利要求2所述的系统,其中所述一个或多个处理器被配置为:使用最初没有属性的所述新的目标ECMAScript对象来启动对所述目标ECMAScript对象的代理,并且将所述多个处理程序对象添加到所述新的目标ECMAScript对象,以至少部分地基于所述目标ECMAScript对象包括至少一个只读属性而使用所述第一代理技术来生成所述代理的目标ECMAScript对象。
4.根据权利要求2所述的系统,其中所述一个或多个处理器被配置为基于空原型来创建所述新的目标ECMAScript对象。5.根据权利要求1所述的系统,其中所述目标ECMAScript对象是目标函数对象;其中所述新的目标ECMAScript对象是新的目标函数对象;并且其中所述一个或多个处理器被配置为:定义多个处理程序对象,所述多个处理程序对象被配置为对所述目标函数对象的属性执行多个相应的操作,所述多个处理程序对象包括所述一个或多个处理程序对象;以及使用最初具有一个或多个函数属性的所述新的目标函数对象来对启动所述目标函数对象的代理,将所述一个或多个处理程序对象应用于所述一个或多个函数属性,并且将所述多个处理程序对象添加到所述新的目标函数对象,以至少部分地基于所述目标函数对象包括至少一个只读属性而使用所述第一代理技术来生成所述代理的目标ECMAScript对象。6.根据权利要求1所述的系统,其中所述一个或多个处理器被配置为:通过将所述一个或多个处理程序对象绑定到所述目标ECMAScript对象来定义所述一个或多个处理程序对象。7.根据权利要求1所述的系统,其中分层对象结构包括多个分层级别,所述多个分层级别包括顶级以及低于所述顶级的一个或多个子级,其中所述目标ECMAScript对象是所述顶级中的所述分层对象结构的根,其中对象的每个属性由子级中的属性对象表示,所述子级紧接在包括相应的所述对象的分层级别之下;并且其中所述一个或多个处理器被配置为针对每个属性对象:确定所述属性对象是否包括至少一个只读属性;至少部分地基于所述属性对象是否包括至少一个只读属性,从所述多个代理技术中选择用于代理所述属性对象的代理技术,所述多个代理技术包括所述第一代理技术和所述第二代理技术,其中所述属性对象包括至少一个只读属性指示所述第一代理技术将从所述多个代理技术中被选择,其中所述属性对象未包括至少一个只读属性指示所述第二代理技术将从所述多个代理技术中被选择;以及使用选择的所述代理技术来代理所述属性对象,以生成代理的属性对象,所述代理所述属性对象包括:创建新的属性对象以替换所述属性对象,并且将至...
【专利技术属性】
技术研发人员:G,
申请(专利权)人:微软技术许可有限责任公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。