Your code is fine. The call to dumb should be:
Obj.dumb(); // "Johnny"
this in JavaScript is defined entirely by how a function is called, not where the function is defined. If you call a function via an object property, within the call this will refer to the object. So for instance, if you did this:
var f = Obj.dumb;
f(); // "undefined"
...then you get undefined (well, probably), because you haven't set any specific value for this. In the absense of a specific value, the global object is used. (window, on browsers.)
You can also set this by using the call or apply features of JavaScript functions:
var f = Obj.dumb;
f.call(Obj); // "Johnny"
The first argument to call (and to apply) is the object to use as this. (With call, any subsequent arguments are passed to the function, so f.call(Obj, 1); would effectively be Obj.dumb(1);. With apply, the second argument is an array to use as the arguments for the function, so f.apply(Obj, [1]); would effectively be Obj.dumb(1);.)
More reading:
Obj.dumb()alertsJohnnyfor me.dumb?