📜  飞镖检查对象是否具有属性 - 飞镖(1)

📅  最后修改于: 2023-12-03 14:58:50.165000             🧑  作者: Mango

飞镖检查对象是否具有属性 - 飞镖

为了保证代码的健壮性,我们需要检查对象是否具有某个属性。在JavaScript中,我们可以使用in关键字或hasOwnProperty()方法来进行检查。但是,这两种方法都有一定的缺点。

那么,我们可以使用一种更加简便、直观的方法来进行属性检查。那就是使用飞镖(箭头函数)。

下面我们来看一下具体的实现。

首先,我们定义一个飞镖函数:

const hasProperty = prop => obj => Object.prototype.hasOwnProperty.call(obj, prop);

这个函数返回一个新函数,用于检查某个对象是否具有指定的属性。

具体来说,对于一个给定的属性名prop,我们返回一个新函数。这个函数接受一个对象obj作为参数,然后调用Object.prototype.hasOwnProperty.call(obj, prop)方法来判断对象是否具有该属性。如果具有该属性,返回true;否则返回false

现在我们来看一下如何使用这个函数。

首先,我们定义一个对象:

const person = {
  name: 'Alice',
  age: 30,
  address: {
    city: 'Shanghai',
    street: 'Nanjing Road',
  },
};

然后,我们可以通过hasProperty()函数来检查该对象是否具有某个属性。比如,我们可以检查该对象是否具有name属性:

const hasName = hasProperty('name');

console.log(hasName(person)); // true

同理,我们可以检查该对象是否具有ageaddress等属性:

const hasAge = hasProperty('age');
const hasAddress = hasProperty('address');

console.log(hasAge(person)); // true
console.log(hasAddress(person)); // true

当然,如果我们检查该对象是否具有一个不存在的属性,那么返回的就是false

const hasScore = hasProperty('score');

console.log(hasScore(person)); // false

综上所述,使用飞镖函数来检查对象是否具有某个属性可以让我们的代码更加简洁、直观。如果你在日常开发中需要频繁进行属性检查,那么这种方法会是一个不错的选择。