《javascript语言精髓与编程实践》--原型继承笔记

时间:2022-09-03 05:43:06

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属性默认指向该构造器。