JS的宿主对象和原生对象是什么?

①:JS的宿主对象和原生对象是什么?
②:为什么扩展JS内置对象不是好的做法?
③:有哪些内置对象和内置函数?

阅读 6k
3 个回答

要知道JS的宿主对象都有哪些,你首先要知道宿主有哪些,这样你针对不同的宿主查宿主拥有的对象就知道宿主对象都有哪些。

JS的宿主取决于JS在哪里运行
一般情况我们会在浏览器中运行JS, 那么宿主就是浏览器,浏览器中的顶级对象就都是宿主对象。比如:window, document等。

常见的宿主

  1. 可以运行V8的Node环境
  2. 一些其他语言的webview组件环境,比如使用C++语言QT中QTWebview环境,
  3. Puppeteer模拟的chrome环境等。

而这些宿主对象你都可以通过相关组件或者库文档查到不同环境提供的宿主对象,有些还会有额外的宿主对象,依赖组件本身的功能而定。

JS的原生对象是指W3C规范中制定的ECMAScript语言的对象,而这一规范被JS引擎所实现。

比如规范目录中,

clipboard.png

这几章都在说语言对象。

你可以从这几章看到所有的语言对象,常用的全局对象,Reflect,Date等

宿主对象指的是Document 和 window等 原生对象那就多了去了像Array object等都是 JS内置对象在浏览器中已经就有一些方法了,而且具有不确定性,你不知道哪一天浏览器或javascript本身就会实现这个方法,而且和你扩展的实现有不一致的表现,有可能对导致你写的代码奔溃了。 至于内置对象和内置函数,像Math,Boolean等都是 内置函数的话alert 和 confirm比较经典吧 其他当然还有很多 楼主可以自己去搜索一下

  1. 扩展JS内置对象会污染全局的代码,因为说不定哪里需要使用原生方法,非常不利于开发及后期维护。
  2. 打开chrome控制台,创建一个对象,使用这个对象时,出现的下拉框提示中不带 > 的大部分都是内置方法,不过也有可能包含Chrome自己封装的方法。

示例

var a = []
a.

或者找个在线的API文档看一下 = . =

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题