JavaScript 2 原型链

178 阅读2分钟

JS三大特性

1 封装

定义:就是把抽象出来的属性和对属性的操作封装在一起,属性被保护在内部,程序的其他部分只能通过特定的操作(函数),才能对属性进行操作。

2 继承

prototype _proto_ constructor

3 多态

定义:指一个引用(类型)在不同情况下的多种状态。同一个方法,作用在不同的对象上产生不同的结果。

原型链

1 当创建一个 函数的时候会自带一个prototype的属性(指针),默认指向一个对象XXX.prototype(原型对象)。
2 在prototype中自带一个constructor属性(指针),指向当前构造函数。
3 所有的实例,对象都自带一个_proto_属性(指针),指向当前构造函数的原型。



function Foo(){} 
1 创建一个Foo构造函数 ,构造函数会自带一个prototype属性 指向Foo.prototype (原型对象)
  Foo.prototype 又会有一个 constructor 属性指回到 Foo 构造函数。
2 函数 Foo 通过_proto_属性指向 Function.prototype

new Foo()
1 实例new Foo() 通过_proto_属性 指向原型对象Foo.prototype,可以访问到prototype上的方法。

Foo.prototype
1 原型通过_proto_ 属性指向Object.prototype。
2 原型通过constructor 指向构造函数 Foo。

function Object(){}
1 构造函数通过prototype属性 指向原型对象Object.prototype,
  Object.prototype又会有一个 constructor 属性指回到 Object 构造函数。
2 构造函数通过_proto_属性指向Function.prototype

new Object()
1 实例new Object()通过_proto_属性指向Obejct.prototype。

Object.prototype
1 原型通过_proto_属性指向null。
2 原型通过constructor指向构造函数function Object(){}

function Function(){}
1 构造函数通过prototype属性 指向原型对象Function.prototype,
  Function.prototype又会有一个 constructor 属性指回到 Function 构造函数。
2 构造函数通过_proto_属性指向Function.prototype

new Function()
1 实例new Function()通过_proto_属性指向Function.prototype。

Function.prototype
1 原型通过_proto_属性指向Object.prototype。
2 原型通过constructor指向构造函数function Function(){}