Javascript has not class, it has only function. So its inheritance is somewhat confusing. Before we talk about inheritance, let's make sure we understanding the basic. Here is the fact.
        <ol>
        <li>a function has property "prototype", the prototype object's points back to the function itself.
        <img src="http://msdn.microsoft.com/msdnmag/issues/07/05/JavaScript/fig03.gif" />

        <pre data-sub="prettyprint:_">
        function Dog(name)
        {
        }
        //the following are true
        alert(Dog.prototype.constructor == Dog);
        alert(Dog.constructor == Function);
        alert(Object.constructor == Function);
        </pre>

        </li>
        <li>
        <img src="http://msdn.microsoft.com/msdnmag/issues/07/05/JavaScript/fig05.gif" />
        <pre data-sub="prettyprint:_">
        var spot = new Dog("fred");
        </pre>
        What does this mean? It means the above picture.


        <pre data-sub="prettyprint:_">
        var spot = new Dog("Spot");

        // Dog.prototype is the prototype of spot
        alert(Dog.prototype.isPrototypeOf(spot));

        // spot inherits the constructor property
        // from Dog.prototype
        alert(spot.constructor == Dog.prototype.constructor);
        alert(spot.constructor == Dog);

        // But constructor property doesn’t belong
        // to spot. The line below displays "false"
        //because a spot is not a function, only fucntion has constructor
        alert(spot.hasOwnProperty("constructor"));

        //but why spot.constructor is not null, it turns up that if the runtime find
        //a property is null, it will check its prototype's property

        // The constructor property belongs to Dog.prototype
        // The line below displays “true”
        alert(Dog.prototype.hasOwnProperty("constructor"));

        alert(Dog.prototype) //alert [object Object]
        </pre>

        The following change depict the property sovling process.
        <img src="http://msdn.microsoft.com/msdnmag/issues/07/05/JavaScript/fig06_L.gif" />


        </li>
        </ol>
        <p>Now let's look how prototype inheritance work</p>

        <pre data-sub="prettyprint:_">
        function Pet()
        {
        this.walk = function()
        { alert("pet walk"); }
        }

        var p = new Pet();
        p.walk();

        function Dog(){}

        //prototype is an instance(object)
        Dog.prototype = p;

        var d = new Dog();

        d.walk();

        </pre>