JavaScript 原型与继承链

Javacript中的函数只有在需要引用到原型时,才具有构造器的特性。而且函数的构造器总是一个标准的,系统内置的Object()构造器的实例,不过该实例创建后constructor属性总是先被赋值为当前函数。函数与构造器并没有明显的区别,唯一的区别是原型prototype是不是一个有意义的值。

JavaScript中的对象实例本质上只是一个指向其原型的,并持有一个属性列表(properties)的结构。

 

原型对象所具有的基本性质:

function/动态语言的方法:  toString, toLocaleString, valueof;

function/对象系统:构造 --->  constructor

function/属性:   propertyIsEnumberable:   对象系统:属性

                            hasOwnProperty/function

function/原型:  isPrototypeof   

 

构造器Object()所具有的特殊成员 (成员名, 类型, 分类)

call /function

apply/function

caller/function   ----> 函数式语言

arguments/object

length/number   ---> 动态语言

prototype/object:  ---> 对象系统/原型

 

注意: 构造器和原型是两个不同的东西, 构造器基本可以称作构造函数;原型是复制的实例。

function MyObject() { } function MyObjectEx(){} MyObjectEx.prototype = MyObject(); var objex = new MyObject

MyObjectEx/objex的构造器是MyObjectEx()这个函数,objex的原型是Mybject的一个实例.

这样就形成了内部原型链,其是JavaScript的原型继承机制所需要的,通过constructor/prototype所维护的构造器原型链,一般是用户代码需要回溯时需要的。

 

你可能感兴趣的:(JavaScript 原型与继承链)