Задать вопрос

Как создать ненаследуемый метод?

Стоит задача добавить в прототип Object метод normalize но нельзя чтобы он наследовался другими объектами (Number String Array и любые другие которые от него наследуются)
normalize выводит нормальзованную версию объекта как это делают массивы ([4,6,'jjj'] => "4,6,jjj")
заменять toString не желательно
Вот код:
Object.prototype.normalize = function(hasOwn){
	hasOwn = hasOwn || false;
	var x = 0;
	var tmp = '{\n';
	if(hasOwn == false){
		for(i in this){
			if(this.hasOwnProperty(i)){
				if(x == 0){
					tmp += '  '+i+': '+(this[i].normalize()||this[i].toString()||this[i]);
                }else{
					tmp += ',\n  '+i+': '+(this[i].normalize()||this[i].toString()||this[i]);
				}
			}
			x++
		}
	}else{
		for(i in this){
			if(x == 0){
                tmp += '  '+i+': '+(this[i].normalize()||this[i].toString()||this[i]);
            }else{
                tmp += ',\n  '+i+': '+(this[i].normalize()||this[i].toString()||this[i]);
            }
			x++
		}
	}
	tmp += '\n}';
	return tmp;
}

я уже пытался сам исправить но стало только хуже
  • Вопрос задан
  • 326 просмотров
Подписаться 1 Оценить 1 комментарий
Решения вопроса 1
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
Это не возможно, поскольку все объекты наследуют от Object.prototype.
Если нужно наследовать только объектам типа object, то посмотрите в сторону такой реализации:

var par= {normalize:function(arguments) {
	// body
}}

var o1= Object.create(par);
o1.normalize();
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы