ECMAScript中的本地类和宿主类是什么?
我在学习ECMAScript的继承概念时看到
要用 ECMAScript
实现继承机制,您可以从要继承的基类入手。所有开发者定义的类都可作为基类。出于安全原因,本地类和宿主类不能作为基类,这样可以防止公用访问编译过的浏览器级的代码,因为这些代码可以被用于恶意攻击。
请问这里面的本地类和宿主类指的是什么?为什么访问他们之后可以造成恶意攻击?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
本地类是js引擎提供的类,String Object等等。宿主类是你运行环境提供的,像chrome这类浏览器提供的 window这个类就是宿主类。
感觉,本地类应该是 Native Object 吧。。定义在这里:http://es5.github.io/#x4.3.6
宿主类是 Host Object,定义在这里:http://es5.github.io/#x4.3.8
简单来说,Native Object 就是,不依赖宿主环境的 ECMAScript 对象。比如,
Function
,RegExp
,Date
这类的构造器相对应地,Host Object 是依赖于宿主环境的 ECMAScript 对象。比如
window
,location
,document
这类的宿主环境,我的理解就是:运行 ECMAScript 的地方。。比如,你可以在命令行里的
nodejs
运行,也可以在浏览器中运行。那么不管你在哪儿运行,new Date()
总会给你正确的结果,但document.getElementById
就只能在浏览器环境中实现了,nodejs
并没有这个。至于为什么修改这些会导致安全风险,当然了。比如构造器,比如你声明
var a = 1
,就会构造出一个Number
的实例,那么如果你的Number()
构造器被改了,里面给你加上了一些钓鱼链接什么的,不就很尴尬了