Итак, я создал конструктор, который я пытаюсь прототип. Я хочу метод, который проверяет каждое свойство в объекте, чтобы увидеть, является ли его пустым, и если он возвращает ключ. Если свойство является объектом, я хочу, чтобы он также проверял этот подэлемент.Рекурсивный метод для проверки объекта
ОБНОВЛЕНО:
Мой код до сих пор:
function Properties(val1, val2, val3, val4){
this.prop1 = val1 || "";
this.prop2 = val2 || "";
this.prop3 = val3 || "";
this.prop4 = val4 || {};
}
Properties.prototype = {
isEmpty: function(){
for (key in this) {
if(typeof this[key] == "object" && this[key] !== null){
this[key].isEmpty();
} else {
if(!this[key]){
console.log(key);
}
}
}
}
}
var test = new Properties("Something", "", "", {subProp1: "Something Else", subProp2: "", subProp3: {subSubProp1: "", subSubProp2: "" }});
Этот метод должен возвращать prop2, prop3, subProp2, subSubProp1, subSubProp2
Что это нужно делать с конструкторами и прототипы? Функция, обнаруживающая пустые словари (объекты), намного лучше стоит. Вы редко хотите проверить свойства экземпляров «класса». Можете ли вы показать полный код (включая конструктор, назначение прототипа, создание экземпляра и вызов метода), а также разработать свой вариант использования? – Bergi
Почему вы ожидаете, что метод существует в подобъекте? Откуда появился ваш подобъект? – Bergi
Да, спасибо, но imo совершенно очевидно, что те объекты, которые вы передаете конструктору (чтобы стать свойствами), не являются * экземплярами 'Properties' * и не будут иметь метод' .isEmpty() '. Вместо этого переходите к новым свойствам («Что-то еще», «», ...). – Bergi