javascript 是用c或c++编写的??? 

解决方案 »

  1.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head><body>
    <script language="javascript">
    var  o = new Object();
    alert(o);
    alert(o.prototype);
    </script>
    </body>
    </html>
      

  2.   

    javascript其实不是严格意义的OO语言,至少他没有很好地实现封装和继承,甚至javascript使用的是function式对象。因此,javascript有一个奇怪的东西就是prototype,javascript中约定了每个对象都可以包含一个prototype对象的引用(属性),
    这个prototype对象在运行时是不可见的,也就是说,定义了之后,你无法直接使用prototype对象。那么,prototype对象有什么用呢?它的作用,就是当你去调用一个对象的函数或属性时,javascript首先会在这个对象的定义中查找,如果找不到,
    他就会去找这个对象的prototype对象有没有这个定义,如果还找不到,他又会去找prototype对象的prototype,一直到对象没有prototype定义为止。是不是和函数继承的目的很象?这就是javascript的原型继承特性。
    但是我们也看出了,这种查找方式,效率非常之低,尤其在prototype链很长的情况下。javascript 2.0会对此有所改进。另外,prototype的定义方式也很奇怪,他必须以一个对象实例(而不是类)的形式,绑定到其他类上。记得吗?prototype是定义时的,同时又是对象。例子:
         o1 = function(){};
         o2 = function(){};
         o2.prototype = new o1;   
      

  3.   


    可以去看开源的SpiderMonkey,c++写的,好像ff用的就是这个,附带提一句,如果是自己定义的Object.prototype中的成员,是可以枚举的。Object.prototype.clone = function(){
      var o = function(){}
      o.prototype = this;
      return new o();
    }
    比如这个,只要你自己定义的对象继承自Object,都会发现带有clone的方法。并且alert(Object.prototype.clone)也是有的