javascript中的原型继承笔记

对象系统的继承特性,三种实现方案

1.基于类

2.基于原型

3.基于元类

高级语言采用基于类,js采用基于原型

 

javascript中没有类只有对象,而是采用"constructor(构造器,构造函数)"的机制来实现类的某些功能

所用的名词:原型,构造器,原型链,new,prototype属性,constructor属性

构造器与函数

//构造器的原型          //函数体

function myObject()      function myObject()

{                {

  prototype=new object();

}                }

//构造器 myObject()      //函数 myObject() 

 函数与构造器并没有明显的界限,其中的唯一区别,只是在于原型prototype是不是一个有意义的值

构造器的用法

function myObject()

{

  var id=1;        //表示私有变量不被继承

    this.name="今晚在线";    //将会被新创建的实例对象所继承

}

 new 命令后面跟的不是类,而是构造函数。用来从原型对象生成一个实例对象

var obj =new myObject();

obj是实例对象,myObject()是构造函数(原型对象)

 

constructor属性

该属性默认总是指向该构造函数

 

prototype属性

 

每个构造函数都有一个prototype属性,但实例对象没有

<script type="text/javascript">
function myObject(){
}

var obj = new myObject();
alert(obj.prototype=== obj.constructor.prototype);     //false
alert(obj.prototype)                  //undefinded
alert(obj.constructor.prototype)             //object
</script>

上述代码可见是实例对象是没有prototype属性的

 

 

 参考

阮一峰的网络日志

http://www.ruanyifeng.com/blog/2011/06/designing_ideas_of_inheritance_mechanism_in_javascript.html

<<javascript 语言精髓与编程实践>>(第二版) 周爱民著

 

 

 

你可能感兴趣的:(JavaScript)