javascript中instanceof和类

  在javascript里,每个function都有一个prototype属性,这个属性的用途是实现继承机制。必如下面定义的
+展开
-JavaScript
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:
假设有一条这样的语句:
+展开
-JavaScript
o instanceof c;
  在上面的语句执行过程中,虚拟机会把c.prototype和o的_proto_链上的节点逐个进行比较,如果找到相等的节点,则返回true,否则返回false。

来源:http://www.cnblogs.com/Qinglong/archive/2009/03/11/1408610.html

加支付宝好友偷能量挖...


评论(0)网络
阅读(129)喜欢(0)JavaScript/Ajax开发技巧