Несколько советов.
DKCore.StringArrayToNumberArray = function(array) {
for(var i = 0; i < array.length; i++)
array[i] = Number(array[i]);
return array;
};
Такой функционал можно сделать проще, заменив всё тело функции на
return array.map(function(val) { return Number(val); } );
См.
руводство. Совместимость безупречная.
DKCore.CloneObject = function(object) {
return Object.create(object);
};
Это не клонирует объект, а создаёт такой новый объект, прототипом которого является данный. Например, если у object есть параметр "species", равный "Cat", а потом ты поменяешь его на "Tiger", то у всех "клонированных" объектов, не имеющих персонально заданного параметра species, тоже поменяется на "Tiger". Это то же самое, что ключевое слово new, но без конструктора. Возможно, это то самое, что тебе и нужно, но тогда название вводит в заблуждение.
Array.prototype.isEmpty = function() {
return this.length === 0;
};
Подобные дополнения к стандартным классам считаются небезопасными потому, что, если я не ошибаюсь, при прогоне такого массива через for..in там внезапно будут обработаны не только числовые индексы, но и поля новых функций!
А length каждого массива увеличится на несколько пунктов, даже если числовых индексов не будет. Я не запускала твой скрипт, чтобы проверить, но читала об этом...
Чтобы избежать этого, новые поля нужно задавать с помощью метода defineProperty с указанным enumerable=false.
Руководство.