Как добавить метод в стандартный объект JavaScript? Привет! Добавляю метод в стандартный объект Object JavaScript через Object.prototype. Однако, после этого, он становится одним из свойств любого объекта, который появляется при переборе (for in), при этом hasOwnProperty, понятно, не спасает. Как сделать так, чтобы метод был "скрыт" при переборе, не выявлялся как свойство?if(Object.prototype.flip === undefined)
(function()
Object.prototype.flip = function(bSelf)
if(bSelf === undefined || bSelf)
for(var k in this)if(this.hasOwnProperty(k))
this[this[k]] = k
delete this[k]
} // f
return this
} else
var oObject = this
return oObject.flip()
} // i
}; // fli
})()
} // i
var oObject = {1:"a", 2:"b", 3:"c"}
for(var k in oObject)if(oObject.hasOwnProperty(k))
log(k); // a, b, c, fli
} // fr

21 Авг 2019 в 07:05
310 +1
0
Ответы
1

Для того чтобы скрыть добавленный метод при переборе объекта, можно использовать специальный символ Symbol. Вместо добавления метода напрямую в Object.prototype, можно добавить его как свойство объекта, где ключом будет символ Symbol.

Пример:

const flipSymbol = Symbol('flip')
if (!Object.prototype[flipSymbol])
Object.defineProperty(Object.prototype, flipSymbol,
value: function(bSelf)
if (bSelf === undefined || bSelf)
for (let k in this)
if (this.hasOwnProperty(k))
this[this[k]] = k
delete this[k]


return this
} else
return this.flip()

}
enumerable: fals
})

const oObject = {1: "a", 2: "b", 3: "c"}
for (let k in oObject)
if (oObject.hasOwnProperty(k))
console.log(k); // a, b,

console.log(Object.getOwnPropertySymbols(Object.prototype)); // [Symbol(flip)]

Теперь метод flip не будет отображаться при обычном переборе объекта, но он доступен для использования как метод объекта через символ Symbol.

20 Апр в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 90 663 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир