@Extramezz

Как установить массиву __proto__?

Возможно ли создать массив с прототипом, каким захочется, только не напрямую пррисваивая свойство __proto__, а через конструктор. Пробовал так, но не получается /

var a = Array;
a.prototype = {lol:1};
a = new a();
//получилось a instanceof Array = true, хотя так быть не должно.....
  • Вопрос задан
  • 133 просмотра
Пригласить эксперта
Ответы на вопрос 2
madmages
@madmages
Человек прямоходящий
//получилось a instanceof Array = true, хотя так быть не должно.....

ты переопределил прототип конструктора и потом пишешь "а соответствует ли имя родителя нового объекта старому?", а так и есть, потому что название родителя не поменялось, зато сам родитель поменялся, но имя - нет.

А конкретно по задаче: я не понимаю что конкретно вам надо.
Ответ написан
bogdanov-s
@bogdanov-s
Че-то там программирую
Расширить Array можно так
var HashMap = function() {
	var obj = [];
	obj.size = function () {
		return this.length;
	};
	obj.isEmpty = function () {
		return this.length === 0;
	};
	obj.containsValue = function (value) {
		for (var i = 0; i < this.length; i++) {
			if (this[i].value === value) {
				return true;
			}
		}
		return false;
	};
	obj.getIndexKey = function (key) {
		for (var i = 0; i < this.length; i++) {
			if (this[i].key === key) {
				return i;
			}
		}
		return -1;
	};
	obj.values = function () {
		var values = [];
		for (var i = 0; i < this.length; i++) {
			values.push(this[i].value);
		}
		return values;
	};
	obj.keySet = function () {
		var keys = [];
		for (var i = 0; i < this.length; i++) {
			keys.push(this[i].key);
		}
		return keys;
	};
	obj.containsKey = function (key) {
		for (var i = 0; i < this.length; i++) {
			if (this[i].key === key) {
				return true;
			}
		}
		return false;
	};
	obj.get = function (key) {
		var index = this.getIndexKey(key);
		if (index > -1) {
			return this[index].value;
		}
		return null;
	};
	obj.put = function (key, value) {
		var i = this.getIndexKey(key);
		if ( i !== -1) {
			var prevValue = this[i].value;
			this[i] = {'key': key, 'value': value};
			return prevValue;
		}
		this.push({'key': key, 'value': value});
		return null;
	};
	obj.clear = function () {
		this.splice(0, this.length);
	};
	return obj;
}

var tetst = new HashMap();
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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