I like this question so I'm taking a shot at it. How about a "chained" style of code, where the object you have returns itself, a la some of the JavaScript DOM frameworks.
I'm calling your Object MyObj:
MyObj.filter('home.price >= 150000')
.filter('home.price <= 400000')
.filter('home.num_of_baths >= 2.5')
.filter('home.num_of_beds == 1 || home.bedrooms == 3');
And here's the source code, this example works.
var MyObj = {
filter : function(rule_expression) {
var tmpHomes = [];
var home = {};
for(var i=0;i