返回介绍

第一部分 类型和语法

第二部分 异步和性能

A.2 宿主对象

发布于 2023-05-24 16:38:21 字数 1039 浏览 0 评论 0 收藏 0

JavaScript 中有关变量的规则定义得十分清楚,但也不乏一些例外情况,比如自动定义的变量,以及由宿主环境(浏览器等)创建并提供给 JavaScript 引擎的变量——所谓的“宿主对象”(包括内建对象和函数)。

例如:

var a = document.createElement( "div" );

typeof a;              // "object"--正如所料
Object.prototype.toString.call( a ); // "[object HTMLDivElement]"

a.tagName;               // "DIV"

上例中,a 不仅仅是一个 object ,还是一个特殊的宿主对象,因为它是一个 DOM 元素。其内部的 [[Class]] 值(为 "HTMLDivElement" )来自预定义的属性(通常也是不可更改的)。

另外一个难点在 4.2.3 节中的“假值对象”部分曾介绍过:一些对象在强制转换为 boolean 时,会意外地成为假值而非真值,这很让人抓狂。

其他需要注意的宿主对象的行为差异有:

· 无法访问正常的 object 内建方法,如 toString();

· 无法写覆盖;

· 包含一些预定义的只读属性;

· 包含无法将 this 重载为其他对象的方法;

· 其他……

在针对运行环境进行编码时,宿主对象扮演着一个十分关键的角色,但要特别注意其行为特性,因为它们常常有别于普通的 JavaScript object 。

在我们经常打交道的宿主对象中,console 及其各种方法(log(..) 、error(..) 等)是比较值得一提的。console 对象由宿主环境提供,以便从代码中输出各种值。

console 在浏览器中是输出到开发工具控制台,而在 Node.js 和其他服务器端 JavaScript 环境中,则是指向 JavaScript 环境系统进程的标准输出(stdout )和标准错误输出(stderr )。

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文