1.直接量:直接量的值可以在声明的同时就确知了;有undefined、true/false、字符串、数值、正则表达式、null
2.表达式:由运算元、运算符组成的,并产生结果的语法结构;本身也是无法预知的;
语句是由“;”分隔的句子或命令,如果在表达式后面加上一个”;“则是表达式语句,它表明“只有表达式,而没有其他语法元素的语句”;
单值表达示:没有运算符的表达式称为单值表达式;
3.null是空对象,可以用for in 来枚举,但枚举不到内空,因为它不是Object()构造器(或子类)实例来的,因此instanceof返回false;
4.{}是空的对象,具有对象的一切特性,已经预定义的属性与方法,因为它是Object()构造器(或子类)实例来的,因此instanceof返回true;可以用for in 来枚举,有一些操作可以使空的对象枚举出一些属性名
5.对象没有原型,只有构造器有原型,属性'构造器.prototype‘指向原型,对象只有“构造自某个原型”的问题,并不存在”持有(或拥有)某个原型“的问题
6.原型其实也是一个对象实例,空的对象是所有对象的基础。对象的构造过程可以简单的映射成为'复制'空的对象,javascript使用”仅当写某个实例的成员时,将成员 的信息复制到实例映像中“
意思就是将所有实例都指向原型,当操作实例时,顺着指针找到原型中的一些属性及方法,但当实例中某个成员不同时,将这个成员的信息复制到实例映像中;
7.对象的构造过程:
函数有一个prototype成员,但在函数初始化时根本是无值的,只有当引用到原型时,才具有构造器的特性,而且函数的原型总是一个标准的、系统内置的object()构造器的实例,不过该实例创建后constructor属性总先被赋值为当前函数
8.对象实例本质上是”一个指向其原型的,并持有一个属性列表的结构“,都是继承自Object.prototype
9.对象原型所具有的基本性质有:
成员名 | 类型 | 分类 |
toString | function | 动态语言 |
toLocaleString | function | |
valueOf | function | |
constructor | function | 对象系统:构造 |
propertyIsEnumerable | function | 对象系统: 属性 |
hasOwnproperty | function | |
isPrototypeOf | function | 对象系统: 原型 |
成员名 | 类型 | 函数式语言 |
call | function | |
apply | function | |
caller | function | |
bind | function | |
arguments | object | 动态语言 |
length | number | |
prototype | object | 对象系统:原型 |
10.每一个实例都有一个proto属性。这个属性是指向原型的,被称为”内部原型链“,因此,实例有两个原型链
11.一个构造器产生的实例,它的constructor属性默认指向该构造器。