我目前正在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
* */
}
由于
答案 0 :(得分:1)
您可以使用:
controller.hasOwnProperty(method)
谷歌为hasOwnProperty了解更多信息