日期:2014-05-16  浏览次数:20355 次

javascript的原型链

javascript中一切都是对象,主要分下面几类:

1>原型对象

Object.prototype?? (所有对象的原型,原型链的最顶端)

??????? Object.prototype.__proto__ 是null

Function.prototype? (所有函数对象的原型,包括构造函数对象,其实就是function(){})

?????? alert(Function.prototype); //function(){}

?????? Function.prototype.__proto__是Object.prototype

Boolean.prototype是false,Boolean.prototype.__proto__是Object.prototype

String.prototype是"",String.prototype.__proto__是Object.prototype

Array.prototype是"",Array.prototype.__proto__是Object.prototype

用户自定义构造函数Foo的原型对象是Foo.prototype,Foo.prototype.__proto__是Object.prototype

2>构造函数对象(内部原型__proto__都是Function.prototype)

2.1>用户自定义构造函数

??? function Foo(){

?

??? }

?

???? Foo的外部原型是Foo.prototype,Foo.prototype.__proto__是Object.prototype

2.2>系统内置构造函数 ??

???? Object的外部原型是Object.prototype

?

???? Function的外部原型是Function.prototype

?

???? Array的外部原型是Array.prototype

?

???? String的外部原型是String.prototype

?

???? Boolean的外部原型是Boolean.prototype

3>用户定义对象(只有内部原型__proto__,没有外部原型prototype)

??? function Foo(){

?

??? }

??? var foo = new Foo();

??? alert(foo.__proto__) //[object Object],内部原型是Foo.prototype