hasOwnProperty 很长,使用长链 if 语句使我的代码不可读。
有没有办法将 hasOwnProperty 重命名为 'hop'、'has' 或只是 'h' 所以我可以说类似
if(req.body.h('first_name') && req.body.h('last_name'))
{
//....
}
hasOwnProperty 很长,使用长链 if 语句使我的代码不可读。
有没有办法将 hasOwnProperty 重命名为 'hop'、'has' 或只是 'h' 所以我可以说类似
if(req.body.h('first_name') && req.body.h('last_name'))
{
//....
}
您可以只引用原始的hasOwnProperty方法。
Object.prototype.h = Object.prototype.hasOwnProperty;
const data = {a:1};
if(data.h('a')){
console.log('success');
}else{
console.log('false');
}
你可以试试Object.prototype
Object.prototype.hop = function(p) {
return this.hasOwnProperty(p);
}
演示:
Object.prototype.hop = function(p) {
return this.hasOwnProperty(p);
}
const object1 = new Object();
object1.property1 = 42;
console.log(object1.hop('property1')); // true
console.log(object1.hop('property2')); // false
我只是创建一个实用程序来接收要检查的属性列表。
function hasProperties(obj, ...names) {
return names.every(n => obj.hasOwnProperty(n))
}
if(hasProperties(req.body, 'first_name', 'last_name'))
{
//....
}
但是.hasOwnProperty()
通常可以通过较短的检查来避免调用,除非您实际上允许Object.prototype
在代码中进行扩展。
要直接回答这个问题,是的,但是您想要的解决方案需要这样的Object.prototype
扩展。我认为它们带来的麻烦远远超过它们的价值。