@EagleAlex
Java

Как на js в одном масиве определять разные объекты?

Добрый день! Есть java script в котором есть:
var Circle = function() {
}
var BonusCircle = function() {
}

Оба объекта добавляются в один массив. Как по индексу массива определять какой объект кто?
  • Вопрос задан
  • 2330 просмотров
Решения вопроса 1
mlnkv
@mlnkv
JavaScript Developer
function Circle() {/* ... */}
function BonusCircle() {/* ... */}
var arr = [Circle, BonusCircle];
arr[0].name // "Circle"
arr[1].name // "BonusCircle
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@lnked
var app = {
	Circle: function() {
		alert('Circle');
	},
	BonusCircle: function() {
		alert('BonusCircle');
	}	
};

app.Circle();
app.BonusCircle();
Ответ написан
@buzzi888
Функция не должна быть анонимна.
Нужно записать ее в таком виде
var Circle = function Circle () {
}


А теперь костыли.
Потом привести ее к текстовому виду( func.toString()) и распарсить регуляркой

var getFunctionName = function (fn) {
   return (fn + '').split(/\s|\(/)[1];
};
Ответ написан
dzedzinskiy
@dzedzinskiy
Full stack developer
Вот такой массив вам нужен
[{key:"Circle", value: object}, {key:"BonusCircle", value: object}, .....]


В цикле получаем индекс, имя функции и саму функцию.

Функция для получения имени:
function functionName(fun) {
  var ret = fun.toString();
  ret = ret.substr('function '.length);
  ret = ret.substr(0, ret.indexOf('('));
  return ret;
}


Только массив заполнять нужно с помощью функции:
function addObjectToArray(array, obj){
    var outerObj = {
          key: functionName(obj),
          value: obj
     };
     array.push(obj);
}
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы