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

JavaScript中的原型链

JavaScript中的继承机制和传统的面向对象语言如C++和Java等基于类的继承机制不同,JavaScript采用基于原型的继承机制。JavaScript中没有类这样的定义,所有都是对象,包括函数。每个对象都有一个与之关联的原型对象,每一个对象都从原型继承属性。

JavaScript中有两个特殊的对象Object和Function,它们都是构造函数,用于生成对象,同时其本身也是对象,对应两个原型对象Object.prototye和Function.Prototype。

其中Object.prototye是所有对象的祖先Function.Prototype是所有函数的原型

我们把对象分为三类:

用户创建的对象:通过new调用生成的普通对象,如var foo=new Foo();

构造函数对象:指普通的构造函数,如Foo、Object和Function

原型对象:构造函数prototype属性所指向的对象,如Foo.prototype、Object.prototype和Function.Prototype

这三类对象都有一个_proto_属性(用户不可见),用于指向该对象的原型。

所有的对象都有一个constructor属性,指向对应的构造函数。构造函数对象还有一个prototype属性指向其构造对象的原型。

Object.prototype具有的基本属性

toString
function

toLocalString
function

valueOf
function

constructor
function
对象的构造函数