function addMethod(object, name, fn) { var old = object[name]; object[name] = function() { if(fn.length === Object.getOwnPropertyNames(arguments[0]).length) { return fn.apply(this, arguments); } else if(typeof old === "function") { return old.apply(this, arguments); }//Object.getOwnPropertyNames(arguments[0]).length }}var SQL={};addMethod(SQL, "select", function(table,a) { var ret = [];//table,join,where for (var Key in table.where){ console.log(Key+"="+this.values[2][Key]); } return ret;});addMethod(SQL, "select", function(table,a,b) { var ret = []; for(var tab in table.joinl) { ret.push(table.joinl[tab]); } var sql="SELECT "+ret.join(",")+" FROM "+table.table; return sql;}); var people = { table:"表名", joinl:["字段1","字段2","字段3"], where: { "user_id[=]":"foo", "user_id[>]":1000, "user_id[<]":500, "user_id[!=]":"foo" }};console.log(SQL.select(people));