Демистификация ошибки «Uncaught TypeError: person.hasownproperty не является функцией»

При работе с JavaScript часто возникают ошибки. Одной из таких ошибок является «Uncaught TypeError: person.hasownproperty не является функцией». Эта ошибка обычно указывает на то, что метод hasOwnPropertyиспользуется неправильно. В этой статье мы рассмотрим различные способы устранения этой ошибки и приведем примеры кода.

Метод 1: правильное использование заглавных букв
JavaScript чувствителен к регистру, и метод hasOwnPropertyдолжен быть написан точно так, как показано. Убедитесь, что заглавные буквы соответствуют имени метода, так как оно должно начинаться со строчной буквы “h”, а остальные буквы должны быть строчными.

const person = { name: 'John', age: 25 };
// Correct usage of hasOwnProperty
if (person.hasOwnProperty('name')) {
  console.log('Property exists!');
} else {
  console.log('Property does not exist!');
}

Метод 2: проверьте, имеет ли объект значение NULL или неопределен.
Ошибка также может возникнуть, если объект, для которого вызывается hasOwnProperty, имеет значение NULL или неопределен. Чтобы избежать этого, убедитесь, что объект определен и не равен нулю, прежде чем использовать hasOwnProperty.

const person = null;
// Checking if person is null or undefined
if (person && person.hasOwnProperty('name')) {
  console.log('Property exists!');
} else {
  console.log('Property does not exist!');
}

Метод 3: используйте метод Object.prototype.hasOwnProperty()
Если ошибка не устранена, вы можете напрямую вызвать метод hasOwnPropertyиз объекта Object.prototype.

const person = { name: 'John', age: 25 };
// Using Object.prototype.hasOwnProperty
if (Object.prototype.hasOwnProperty.call(person, 'name')) {
  console.log('Property exists!');
} else {
  console.log('Property does not exist!');
}

Метод 4: Защита с помощью функции утилиты
Чтобы не повторять одни и те же проверки несколько раз, вы можете создать функцию утилиты, которая обрабатывает проверку hasOwnPropertyи возвращает логическое значение.

function hasOwnProperty(obj, prop) {
  return Object.prototype.hasOwnProperty.call(obj, prop);
}
const person = { name: 'John', age: 25 };
if (hasOwnProperty(person, 'name')) {
  console.log('Property exists!');
} else {
  console.log('Property does not exist!');
}

Ошибка «Uncaught TypeError: person.hasownproperty is not a function» часто возникает из-за неправильного использования метода hasOwnPropertyв JavaScript. Обеспечивая правильное использование заглавных букв, проверяя наличие нулевых или неопределенных объектов, используя Object.prototype.hasOwnProperty()или создавая служебную функцию, вы можете эффективно устранить эту ошибку и повысить надежность вашего кода JavaScript.

Не забывайте всегда дважды проверять свой код и использовать правильные методы обработки ошибок, чтобы выявлять и устранять непредвиденные ошибки в ваших приложениях JavaScript.