JavaScript中的本地对象、内置对象和宿主对象
来源:互联网 发布:unity3d 画圆圈 编辑:程序博客网 时间:2024/05/17 03:17
初学JavaScript的时候总是分不清什么是本地对象、内置对象和宿主对象,现在写一篇博客来记录一下。
一、本地对象
ECMA-262把本地对象(native object)定义为:独立于宿主环境的ECMAScript实现的对象。
这里简单说一下JavaScript的应用环境,JavaScript的应用环境由宿主环境和运行期环境构成。宿主环境主要是指外壳程序(shell)和Web浏览器等,运行期环境由JavaScript引擎内建的。
下面是在51CTO上找到的一张图:
现在来看一下本地对象有哪些:
Object、Function、Array、String、Number、Date、RegExp、Boolean、Error、EvalError、RangeError、ReferenceError、SyntaxError、TypeError、URIError
由此得出,JS的本地对象就是ECMA-262中定义的类(引用类型)。
二、内置对象
ECMA-262把内置对象定义为:由ECMAScript提供实现的、独立于宿主环境的所有对象,在ECMAScript程序开始执行时出现。
这意味着内置对象都是已经实例化好的,不需要我们再进行实例化了,这里我们首先会想到的就是Math
对象。
ECMA-262定义的内置对象只有两个:Global和Math。(本地对象和内置对象都是独立于宿主对象,根据定义可以看出来内置对象也是本地对象,在JS中所有的内置对象都是本地对象)。
Math
对象是我们经常用到的,但是Global
就比较少见了。其实我们经常用到Global
对象,只是没有用Global
这个名字。
Global
对象是一个比较特殊的对象,它是一个全局对象,在程序中只有一个,它的存在伴随着整个程序的生命周期,全局对象不能通过名字来访问,但是它有一个window
属性,这个属性指向它本身。
大家也要清楚,在ECMAScript中不存在独立的函数,所有的函数都应该是某个对象的方法。类似于isNaN()、parseInt()、parseFloat()等方法都是Global对象的方法。
关于Global对象的属性和方法,参考JavaScript全局对象参考手册。
三、宿主对象
宿主对象:由ECMAScript实现的宿主环境提供的对象。
可能这样不是很好理解,上面已经说过了宿主环境包括Web浏览器,所以我们可以这样理解,浏览器提供的对象都是宿主对象。
也可以这样理解,因为本地对象是非宿主环境的对象,那么非本地对象就是宿主对象,即所有的BOM对象和DOM对象都是宿主对象。
那么还有一种对象,那就是我们自己定义的对象,也是宿主对象。
最简单的理解:ECMAScript官方未定义的对象都属于宿主对象。
四、总结
官方的定义太绕口,还不好理解。说的简单点:
本地对象就是ECMAScript中定义好的对象,如String
、Date
等,内置对象是本地对象中比较特殊的一种,它不用实例化,包括Global
和Math
,宿主对象就是BOM、DOM和自己定义的对象。
- JavaScript中的本地对象、内置对象和宿主对象
- Javascript对象 、本地对象、内置对象和宿主对象
- javascript本地对象、内置对象、宿主对象和自定义对象
- JavaScript中的本地对象、内置对象、宿主对象
- JavaScript 本地对象、内置对象、宿主对象
- JavaScript 本地对象、内置对象、宿主对象
- JavaScript 本地对象、内置对象、宿主对象
- JavaScript 本地对象、内置对象、宿主对象
- JavaScript 本地对象、内置对象、宿主对象
- JavaScript本地对象 内置对象 宿主对象
- javascript本地对象,内置对象、宿主对象
- JavaScript本地对象 内置对象 宿主对象
- Javascript----本地对象、内置对象、宿主对象
- JavaScript 本地对象、内置对象、宿主对象
- javascript中本地对象、内置对象和宿主对象
- javascript本地对象、内置对象和宿主对象
- javascript中本地对象、内置对象和宿主对象
- javascript中本地对象、内置对象和宿主对象
- 网易视频云CEO余利华:云服务的核心仍是用户体验
- matlab fir2 函数的使用
- mongodb使用profiler
- 超快和轻松为RecyclerView添加头部:RecyclerViewHeader
- 为了使平面3*x-k*y-3z+16=0与曲面3*x^2+y^2+z^2=16相切,求k
- JavaScript中的本地对象、内置对象和宿主对象
- WaitForSingleObject和WaitForMutileObject
- git中如何忽略project.xcworkspace/xcuserdata/username.xcuserdatad/userinterfacestate.xcuserstate文件
- 5分钟搞定android混淆
- shell脚本编程语法
- 播放视频的方式
- 暑期dp46道(16)hdoj 1025 Constructing Roads In JGShining's Kingdom最长上升子序列(二分)
- threadIdx,blockIdx, blockDim, gridDim之间的区别与联系
- 兼容移动端和pc端的弹性盒模flexbox