ECMAScript中的本地类和宿主类是什么?

发布于 2022-09-04 12:52:29 字数 221 浏览 24 评论 0

我在学习ECMAScript的继承概念时看到

要用 ECMAScript
实现继承机制,您可以从要继承的基类入手。所有开发者定义的类都可作为基类。出于安全原因,本地类和宿主类不能作为基类,这样可以防止公用访问编译过的浏览器级的代码,因为这些代码可以被用于恶意攻击。

请问这里面的本地类和宿主类指的是什么?为什么访问他们之后可以造成恶意攻击?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

羅雙樹 2022-09-11 12:52:29

本地类是js引擎提供的类,String Object等等。宿主类是你运行环境提供的,像chrome这类浏览器提供的 window这个类就是宿主类。

我的黑色迷你裙 2022-09-11 12:52:29

感觉,本地类应该是 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() 构造器被改了,里面给你加上了一些钓鱼链接什么的,不就很尴尬了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文