【发布时间】:2013-10-27 00:33:17
【问题描述】:
我遇到了以下问题。
我有不同的对象,例如:
使用方法的用户:id,用户名,名字,姓氏
文章:用其他方法;
我想添加动态方法,如 getById、getByUsername 等。
var object = new Object() ; // Object can take the value user, article or other. </code>
for(var key in object) {
this["getBy" + key]= function(args) {
var result = query("SELECT * FROM " + object.name + ' WHERE ' key + "=" +args);
console.log(key); //always return the last key of object
return(result);
}
// then
var user = new User();
user.getByUsername('someone');
当函数中没有参数时,像这样的动态添加方法可以正常工作。所有的方法都定义得很好,但是当我把它们称为改变时(当然)我只有最后一个函数。
如果有人可以帮助我,我整天都在做这件事,但我仍然找不到解决方案。
【问题讨论】:
-
你能具体说明你是如何调用这些函数的吗?
-
顺便说一句,您能否提供有关
user对象的详细信息? -
您的问题似乎不清楚,因为您的代码不完整,
this指的是什么?user对象,但直观地说,似乎发生的是循环中的每个键都必须覆盖其先例 -
正如所写,您的代码中的
this当前指的是全局(或在节点中,模块全局)对象。或者在 ES5 严格模式下它甚至可以引用 null。由于 javascript 中的this取决于周围代码的执行方式,因此您还需要为此提供代码 - 它是构造函数吗?回调?事件处理程序? -
您的
SELECT方法很难且不可维护,通常在User,Article上有标准方法作为数据库的实体,您通过构建一个更难的SELECT查询而不是构建方法。
标签: javascript node.js object dynamic methods