检查对象的非本机方法
Checking objects for non native methods
我目前正在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
* */
}
谢谢
您可以使用:
controller.hasOwnProperty(method)
Google for hasOwnProperty了解更多信息
相关文章:
- 如何在从客户端接收数据时从本机方法触发javascript函数?
- PhpStorm不会自动完成JavaScript本机方法或属性
- Array.insert函数错误,因为Object函数Array(){〔本机代码〕}没有方法'插入'
- TypeError:对象函数Object(){〔本机代码〕}没有方法'方法'
- 有没有一种方法可以使用浏览器'使用Javascript的本机gzip解压缩
- 使用方法和属性定义javascript对象的最佳方法是什么?(如果可能以本机方式)
- 是否有一种本机方法可以将字符串从任何区域设置转换为数字
- 是否可以覆盖本机 Es6 承诺解析方法
- 调用本机原型方法时扩展或继承对象原型
- 如何按类删除元素(本机方法)
- Javascript 本机方法抛出意外异常
- 如何恢复覆盖的本机方法
- 定义本机方法以根据数组中的属性对数组进行排序
- 重写Javascript本机方法并调用super
- 我们可以用另一个函数名作为方法的参数从javascript调用本机方法吗?
- 在WKWebView中公开JavaScript中的本机方法
- 使用loadash或一些本机方法检查array1是否包含array2中的任何元素
- 在 JS 中调用本机方法时,当它们过载时
- 检查对象的非本机方法
- 为什么重写本机方法不是一个好主意?