Как переименовать объект JavaScript функции hasOwnProperty? - PullRequest
0 голосов
/ 02 апреля 2019

hasOwnProperty длинный и делает мой код нечитаемым с помощью длинных цепочек операторов if.

Есть ли способ переименовать hasOwnProperty в 'hop', 'has' или просто в 'h', чтобы я мог сказать что-то вроде

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

Ответы [ 3 ]

2 голосов
/ 02 апреля 2019

Вы можете просто сделать ссылку на оригинальный метод hasOwnProperty .

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

const data = {a:1};

if(data.h('a')){
  console.log('success');
}else{
  console.log('false');
}
1 голос
/ 02 апреля 2019

Вы можете попробовать с 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
0 голосов
/ 02 апреля 2019

Я бы просто создал утилиту, которая получает список свойств для проверки.

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

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

Но вызовов .hasOwnProperty() обычно можно избежать с помощью более коротких проверок, если только вы на самом деле не разрешаете расширения Object.prototype в своемкод.

Чтобы ответить на вопрос напрямую, да, но для вашего желаемого решения потребуются такие Object.prototype расширения.Я думаю, что они гораздо больше проблем, чем они стоят.

...