持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第3天,点击查看活动详情
JavaScript是面向对象的语言。JavaScript的对象根据生成的环境/运行时可以分为两类:
宿主对象
JavaScript宿主环境提供的对象,行为完全由宿主环境决定。
宿主对象进一步分为环境本身自带的对象,和用户创建的对象。
关于宿主环境自带的对象
如果JavaScript运行在Web浏览器,那么宿主环境就是浏览器环境。浏览器环境提供了window这个全局对象,程序中就可以使用window对象。document是window的属性,在程序中也可以使用document这个属性。如果JavaScript运行在Node中,在程序在运行时涉及到window,Node会报window没有定义的错误。
关于在宿主环境中用户创建的对象
如果JavaScript运行在web浏览器,程序中可以使用内置于浏览器的API创建对象。
常见的浏览器API包括但不限于:
DOMAPI:可以操作HTML和CSS,创建、移除或者修改HTML。
XMLHttpRequest和FetchAPI:可以从服务器获取数据。
Canvas和WebGL:可以绘制和操作图形
以及一些图片音视频API
内置对象
关于内置对象这个词,在JavaScript的装箱和拆箱转换里也提到过,这里详细介绍内置对象。
内置对象可以分为三种,一是在JavaScript运行时自动创建的对象,二是用户通过JavaScript内置的构造器创建的对象,三就是用户通过{}、Object构造器、class定义类创建的对象。
关于JavaScript运行时自动创建的对象
这些对象在执行JavaScript代码前就被创建出来了,比如“类”。可以简单理解一下:比如代码执行class关键词前,就有一个基类,class新创建的对象继承了这个基类。
关于使用内置的构造器创建的对象
JavaScript内置的构造器有很多:
常见的构造器包括但不限于:
Boolean、Number、String、Symbol、Object、Function、Array、Map、Set、Date、RegExp、Promise
使用new运算符,可以生成构造器对应的对象。
这类对象不能被原型继承,有特殊的能力或者性能。
比如new Array生成的数组实例,有length属性,支持下标访问,连续存储等特点。
比如new RegExp生成的正则实例,实现正则匹配的功能。
用户自定义创建的对象
let obj = {} 是一个对象
let obj = Object.create(null) 是一个对象
class o {
constructor(){
this.str = ''
}
}
let obj = new o() 也是对象
这类对象能够被原型继承,也是代码中最常见的对象。
总结
JavaScript的对象既简单又复杂,希望看完本文的你对JavaScript的对象有更多的了解。