Last active
December 10, 2015 22:38
-
-
Save ScalableJS/4503307 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Класс для работы с приватными переменными | |
* @param data {Object|undefined} необязательный параметр | |
* @constructor | |
*/ | |
var PrivateValue = function (data) { | |
/** | |
* Установка переменных ключ значение или селектор значение | |
* @param name {String} | |
* @param val {*} | |
* @return {PrivateValue} | |
*/ | |
this.SetParam = function (name, val) { | |
if (this.type(val) == "object") { | |
val = this.CloneObj(val); | |
} | |
var t = this, objVars = _vars, arrParam = name.split("."), lastElem = arrParam.length - 1; | |
for (var n = 0; n < arrParam.length; n++) { | |
var itemVal = arrParam[n]; | |
objVars = objVars[itemVal] = lastElem == n ? val : objVars[itemVal] || {}; | |
} | |
return t; | |
}; | |
/** | |
* Возвращает копии всех переменных | |
* @return {*} | |
*/ | |
this.GetAllParam = function () { | |
return this.CloneObj(_vars); | |
}; | |
/** | |
* Возвращает копию переменной | |
* @param name {String} | |
* @return {*} | |
*/ | |
this.GetParam = function (name) { | |
var t = this, objVars = this.CloneObj(_vars), arrParam = name.split("."); | |
for (var item in objVars) { | |
if (objVars.hasOwnProperty(item)) { | |
objVars = objVars[item]; | |
} | |
} | |
/*for (var n = 0; n < arrParam.length; n++) { | |
objVars = objVars[n]; | |
}*/ | |
return objVars; | |
}; | |
/** | |
* Очистка переменных | |
* @return {PrivateValue} | |
*/ | |
this.Clear = function () { | |
_vars = {}; | |
return this; | |
}; | |
/** | |
* Вставка в переменную-масив значение | |
* @param name {String} | |
* @param val {*} | |
* @param i {Number} | |
* @return {PrivateValue} | |
*/ | |
this.PushParam = function (name, val, i) { | |
var t = this; | |
var arr = t.GetParam(name); | |
if (this.type(i) == "number") { | |
arr[i] = val; | |
} else { | |
arr.push(val); | |
} | |
t.SetParam(name, arr); | |
return t; | |
}; | |
/** | |
* Клонирование объектов | |
* @param objIn | |
* @return {Object} | |
*/ | |
this.CloneObj = function (objIn) { | |
var t = this, objOut = {}; | |
for (var item in objIn) { | |
if (objIn.hasOwnProperty(item)) { | |
objOut[item] = objIn[item]; | |
} | |
} | |
return objOut; | |
}; | |
/** | |
* Boolean Number String Function Array Date RegExp Object (null, undefined) | |
* Проверка типов | |
* @param obj {*} | |
* @return {String} | |
*/ | |
this.type = new function (obj) { | |
var class2type = {}; | |
var arr = "Boolean Number String Function Array Date RegExp Object".split(" "); | |
for (var n = 0; n < arr.length; n++) { | |
class2type[ "[object " + arr[n] + "]" ] = arr[n].toLowerCase(); | |
} | |
return function (obj) { | |
return obj == null ? | |
String(obj): | |
class2type[Object.prototype.toString.call(obj)] || "object"; | |
} | |
}; | |
/* private value */ | |
var _vars = this.CloneObj(data || {}); | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment