winter老师《重学前端》学习笔记
宿主对象
宿主对象,由js宿主环境提供的对象,它们的行为完全由宿主环境决定。前端中常见的就是浏览器环境。
浏览器中全局对象window,window.document属性。宿主也会提供一些构造器,如Iamge
var div = document.createElement('div');
var img = new Image();
内置对象
由js语言提供的对象
- 固有对象:由标准规定,随着js运行时创建而自动创建的对象实例
- 原生对象:可以由用户通过Array、Date等内置构造器或者特殊语法创建的对象
- 普通对象:由{}、Object构造器或者class关键字定义类创建的对象,它能够被原型继承
js中通过语言本身的构造器创建的对象,称为原生对象。可以用new运算符创建新的对象。这些称为原生对象
函数对象和构造器对象
- 函数对象的定义是:具有[[call]]私有字段的对象
- 构造器对象的定义是:具有私有字段[[construct]]的对象
作为函数调用和作为构造器调用表现不一至
var date = new Date(); //返回对象
var date2 = Date(); //返回字符串
浏览器宿主环境中,提供Image构造器,不允许作为函数调用
var img = new Image();
var img2 = Image(); //error
基本类型(String、Number、Boolean)它们的构造器被当作函数调用,则产生类型转换效果
箭头函数,不能当作构造器使用
new (a => 0) //error
特殊的对象
有一些对象的行为跟正常对象有很大区别,它们常见的下标运算或者设置原型跟普通对象不同
- Array的length属性根据最大的下标自动发送变化
- Object.prototype:作为所有正常对象的默认原型,不能再给它设置原型了
- Arguments:arguments 的非负整数型下标属性跟对应的变量联动
- 类型数组和数组缓冲区:跟内存块相关联,下标运算比较特殊