Improving a JS object "framework"
My perspective on your questions:


It breaks when you want to change the behavior of all cats, since you do not store functions in the .prototype of the classes. Also, not using .prototype makes your code consume more memory.
There is indeed a standard way of doing this, however it kind of breaks your requirement : "But also to have the class, constructor and inheritance in a one block, as OO languages usually do." 
I think vanilla JS does better and is less contrived.


Most of the code I borrowed from this excellent text.

Your FourLegged class would be:

function FourLegged() {
   this.cry = "ffffhhhh!"; //default value
}
//Functions/methods should be part of prototype
FourLegged.prototype.talk = function talk(){
  writeln( this.cry);
};


If you absolutely insist on doing this in 1 block, you could do this : 

var FourLegged = (function() {

  function f() {
     this.cry = "ffffhhhh!"; //default value
  }

  f.prototype.talk = function talk(){
    writeln( this.cry);
  };

  return f;
}());


Then the cat would be this ( wrapped in a function, not required )

var Cat = (function() {

  function f(name){

     FourLegged.call(this);

     (function nameProperty( o , name) {
       // private var defined in instance
       var _name = name;
       // methods that use private var - Douglas Crockford nethod
       o.setName = function(name) { _name = name; };
       o.getName = function() { return _name; };
    })(this , name);
  }

  f.prototype = new FourLegged();
  f.prototype.constructor = f;

  f.prototype.talk = function talk() {
    writeln( this.getName() + " says " + this.cry);
  };
  f.prototype.setCry = function setCry( s ) {
    this.cry = s;
  };

  return f;
}());


Your tests will perform exactly the same, except you do not need _parent, _heap, instance() or getConstructor().

Update

A clarification on 'it does not use memory'.When I create objects this way in the console in Chrome : 

function FourLegged() 
{
   this.CRY = "ffffhhhh!";
   this.talk = function() { writeln( this.CRY); };
}


I find that these object take 88 bytes. ( Take a head snapshot with developer tools ).

When I create objects the following way in the console in Chrome:

function FourLegged() 
{
   this.CRY = "ffffhhhh!";
}
FourLegged.prototype.talk = function() { writeln( this.CRY); };


These objects take 48 bytes, and that is because the talk function remains on prototype, it does not get copied over the object.