检查非本机方法的对象

时间:2011-04-24 18:21:59

标签: javascript object prototype

我目前正在NodeJS中构建一个MVC框架但是我遇到了一个小问题,当我正在检查控制器中是否存在一个方法时,我正在执行以下操作:

var controller = new (this.appManager.getControllerObj(this.route.controller))();
var method     = this.route.method;

if(method in controller)
{
    /*
     * Method exists within controller
     * */
}

但显然对象类型具有原生原型,因此如果我使用以下内容访问我的网站:https://localhost/index/__proto__它显然会尝试路由该方法。

现在我知道我可以简单地列出黑名单特定的方法,但有更好的方法来实现这个

更新

这似乎工作正常:

if((method in controller) && !controller.hasOwnProperty(method))
{
    /*
     * Method exists within controller
     * */
}

由于

1 个答案:

答案 0 :(得分:1)

您可以使用:

controller.hasOwnProperty(method)

谷歌为hasOwnProperty了解更多信息