function Obj() {}
var o = new Obj();
alert(o.toString());
我一开始以为是,定义一个构造函数时,他的prototype就会被Object()给创建,然后继承Object()的prototype的所有属性
可是当我alert(o.prototype)时,显示undefined,那o.toString()是怎么来的?甚至var o = new Object();o的prototype也是undefined,我实在不明白。

解决方案 »

  1.   

    alert(Object.prototype);
    var i = new Object(); //i只是获得了原型链内的方法。而不是将object的原型链赋给了i。就像java、c#对象从来没有拿到构造函数方法一样
    alert(i.prototype);
      

  2.   

    我想问下,一般定义构造函数时,里面定义的变量是用this还是用var
    比如
    function Obj() {
       this.a;
       或者
        var a;
    }
    用var的话也就是相当于OOP中的私有变量了,之后再提供getter和setter就行了
    可是用this的话,再提供getter和setter就没有任何意义了
    用哪种好?
      

  3.   


    如果要私有就var定义,共有用this即可
    function A() {
        var name = "jack";
        var age = 22;
        this.sex = true;
        this.getAge = function () {
            return age;
        };    
    }
      

  4.   

    要访问o的原型(在没有改变constructor的情况下)可以这样:alert(o.constructor.prototype);
      

  5.   

    函数才有原型对象o是一个实例,所以没有原型对象.o的构造函数才有原型typeof o.constructor;// function
    typeof o.constructor.prototype; // object