0

hasOwnProperty 很长,使用长链 if 语句使我的代码不可读。

有没有办法将 hasOwnProperty 重命名为 'hop'、'has' 或只是 'h' 所以我可以说类似

 if(req.body.h('first_name') && req.body.h('last_name'))
 {
    //....
 }
4

3 回答 3

2

您可以只引用原始的hasOwnProperty方法。

Object.prototype.h = Object.prototype.hasOwnProperty;

const data = {a:1};

if(data.h('a')){
  console.log('success');
}else{
  console.log('false');
}

于 2019-04-02T10:36:37.997 回答
1

你可以试试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

于 2019-04-02T10:35:13.540 回答
0

我只是创建一个实用程序来接收要检查的属性列表。

function hasProperties(obj, ...names) {
  return names.every(n => obj.hasOwnProperty(n))
}

 if(hasProperties(req.body, 'first_name', 'last_name'))
 {
    //....
 }

但是.hasOwnProperty()通常可以通过较短的检查来避免调用,除非您实际上允许Object.prototype在代码中进行扩展。

要直接回答这个问题,是的,但是您想要的解决方案需要这样的Object.prototype扩展。我认为它们带来的麻烦远远超过它们的价值。

于 2019-04-02T10:35:12.297 回答