急急急,javascript的prototype问题?
<script language="javascript">function kk(){
  this.a=123;
 }document.write (kk.prototype==Object());</script>第一:document.write (kk.prototype)结果是[object Object]第二:document.write (Object())结果是[object Object]kk.prototype原型就是指向了Object()的,既然是指向了Object(),那么为什么(kk.prototype)==Object()不相等啊?返回false啊?
最后问下,怎么判断出kk.prototype的原型对象是哪个,也就是说是哪个东西给prototype赋的值?

解决方案 »

  1.   

    kk.prototype原型就是指向了Object()的,既然是指向了Object(),那么是指向了某个 new  OBJECT()
      

  2.   

    ==是判断栈中的值是否相等, 而你问题中的两个对象 属于引用类型,引用类型是将数据存在堆中,在栈中保存数据在堆中的内存地址。 显然,每个实例对象在内存中都是有不同的内存地址的,所以你用==判断的只是他们的内存地址,而不是它们的值,所以就返回false咯!
      

  3.   

    function kk(){ 
      this.a=123; 
    } alert(kk.prototype.toString() == Object().toString());这样才能相等,你调用document.write的时候其实是写的是字符串
    而不是本身的内容。
    本身是一个地址。
      

  4.   

    "=="比较内存,当然不相等啦.
    Object()行到的是Object类的构造方法new出来的.
    kk.prototype只是等到了KK的构造方法new出来