现在的位置: 首页 > 综合 > 正文

javascript中instanceof和类的细节

2013年03月30日 ⁄ 综合 ⁄ 共 653字 ⁄ 字号 评论关闭

在javascript里,每个function都有一个prototype属性,这个属性的用途是实现继承机制。必如下面定义的function class1:
      function class1(){} 
      class1.prototype = {a:10,b:100};
则class1的每个实例都会从prototype继承a和b这两个属性。

同时,每个对象都会有一个内部的属性_proto_(不同的javascript虚拟机实现用的名字可能不同),这个属性对js开发人员不可见,只在虚拟机内部使用。每当创建一个对象的时候,这个对象的_proto_就会被赋值为这个对象的构造函数的prototype,这样对象的_proto_属性和构造函数的prototype引用相同的对象,并且一旦对象创建完成,_proto_属性就不会改变。
这样通过对象的_proto_属性,以及_proto_所引用的对象的_proto_属性,就构成了一个_proto_链。 当访问一个对象的属性和方法的时候,js虚拟机正是通过这个_proto_链来查找的。


关于instanceof:
     假设有一条这样的语句:
     o instanceof c;

     在上面的语句执行过程中,虚拟机会把c.prototype和o的_proto_链上的节点逐个进行比较,如果找到相等的节点,则返回true,否则返回false。


本文转自:http://www.cnblogs.com/Qinglong/archive/2009/03/11/1408610.html

抱歉!评论已关闭.