文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
A.2 宿主对象
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论