You can't change (that is, completely swap-out) the prototype of an object once it's been created (yet; in a future version of JavaScript, it's likely to be possible).
Objects in JavaScript are enormously malleable, though. You can do this, for instance:
o.a = A.prototype.a;
...and then o will have the a function. If you wanted to give it all of the enumerable properties of A.prototype (including any from its prototype):
var name;
for (name in A.prototype) {
o[name] = A.prototype[name];
}
The prototype property of functions is a completely normal, boring object assigned to a normal, boring property on the function. When you use new to create an object using that function (which is called a "constructor function"), the function's prototype property is assigned to the newly-created object as its underlying prototype (which has no name you can access in code [yet]).
As of ES5 (reasonably supported in Chrome, Firefox, Opera, and IE9; not in IE8 and earlier), you can get the prototype of an object via Object.getPrototypeOf, and you can create objects assigning them a prototype without going through constructor functions by using Object.create, but you can't change what an object's prototype is once it's been created.
Some JavaScript engines (like the one in Firefox) have a currently-non-standard extension called __proto__ which lets you directly access and manipulate the prototype of an object, by treating it as a property. E.g.:
o.__proto__ = A.prototype;
...but that is not standard at present. It may well be part of the next standard, though. If you're interested in information about the upcoming ES6, you can find draft specifications and such here.