本文共 2081 字,大约阅读时间需要 6 分钟。
每天10分钟,重构你的前端知识体系专栏笔记。
宿主对象是由JavaScript宿主环境提供的对象,其行为由宿主环境决定,不受JavaScript引擎控制。
内置对象是JavaScript语言提供的对象,其行为由JavaScript引擎控制。
固有对象由ECMA标准规定且随着JavaScript引擎运行生成,用于解释和支持JavaScript运行时的基础服务。
原生对象可以通过内置构造器如Array、RegExp创建,行为由宿主环境决定。
普通对象通过{}语法、Object构造器或class关键字定义,支持原型继承。
window是JavaScript的全局对象,包含浏览器提供的API,如window.open、window.location等。
固有对象在代码执行前即由JavaScript引擎创建,起着类似基础库的作用。
通过使用Reflect、Object.defineProperty等方法可获取固有对象的属性,常用采用广度优先搜索方式收集所有对象和构造器。
InfinityNaNundefinedevalisFiniteisNaNparseFloatparseIntdecodeURIdecodeURIComponentencodeURIencodeURIComponentArrayDateRegExpPromiseProxyMapWeakMapSetWeakSetFunctionBooleanStringNumberSymbolObjectErrorEvalErrorRangeErrorReferenceErrorSyntaxErrorTypeErrorURIErrorArrayBufferSharedArrayBufferDataViewTyped ArrayFloat32ArrayFloat64ArrayInt8ArrayInt16ArrayInt32ArrayUint8ArrayUint16ArrayUint32ArrayUint8ClampedArrayAtomicsJSONMathReflectAtomicsJSONMathReflectObject.getOwnPropertyNames获取对象属性,分析每个属性的Getter和Setter,收集所有固有对象。原生对象根据应用场景分类如下:
new创建,不能用函数调用方式。Function构造器或function语法创建。Error,内部结构无法通过原型继承访问。new创建,不能用函数调用,避免使用class扩展。[[ErrorData]],不支持原型继承。函数对象具有[[call]]私有字段,用于接受this和参数并执行。
构造器对象具有[[construct]]私有字段,用于创建对象实例。
Object.prototype为原型创建新对象。[[construct]],用新对象作为this。[[construct]]返回对象则用返回值,否则返回初始新对象。Date作为构造器创建新对象,作为函数返回字符串。Image构造器需用new,否则报错。String等返回转换结果。new Date创建日期对象,Date()返回字符串。Image构造器需用new,不能直接调用。class的函数不能作为构造器。length属性。import时使用。通过以上分类,我们可以更清晰地理解JavaScript对象系统的结构与用法。
转载地址:http://jihiz.baihongyu.com/