Вы можете получить тот же конечный результат, вы просто не можете сделать это в одном выражении:
var pVals = {
ob1: "postvar1",
ob2: "postvar2",
ob3: "postvar2"
};
var obj = {};
obj[pVals.ob1] = "object 1";
obj[pVals.ob2] = "object 2";
obj[pVals.ob3] = "object 3";
$.post("php/dosomething.php", obj);
Это потому, что «ключи» в анонимном конструкторе хеш-стиля обрабатываются только как литералы, они сами не могут быть выражениями. Но когда вы используете массивоподобные ссылки, вы можете использовать любое допустимое выражение javascript для вычисления «ключа».