Инстанс объекта или массива
Есть переменная типа Array или Object, есть ли общепринятая функция которая возвращает новый пустой инстанс переменной?
Если Array, - [] Если Object, то {} |
"Родную" не видел но можно написать
var arr = [4,6], obj = {k:5};
function liter(a){
if(a instanceof Array) return [];
if(a instanceof Object) return {};
}
console.log(liter(obj));
console.log(liter(arr));
|
Не знаю насчет общепринятой, но можно так:
var arr = [1,2,3,4],
obj = {a:1,b:2};
function empty(it) {
if(typeof it == 'object') {
if(Array.isArray(it)) return [];
else return {};
} else return null;
}
alert(JSON.stringify(empty(arr)));
alert(JSON.stringify(empty(obj)));
|
Конструкторы объектов типа Object, Array вызванные без аргументов возвращают "пустые" объекты и массивы соответственно.
var a = ["a", "b", "c"];
var o = { id: 60 };
var emptyA = a.constructor();
var emptyO = o.constructor();
console.log(emptyA, emptyO);
|
Спасибо! Написал так:
if (obj instanceof Object) value = obj.constructor(); |
alert(([] instanceof Object)?'true':'false'); |
Nexus,
любишь все усложнять :write: alert([] instanceof Object); |
j0hnik, я просто хотел показать тс, что его проверка несколько некорректная, если ему нужно проверить, является ли переменная объектом, а не массивом.
Написал "сложно", т.к. думал, что bool к строке приведется, как int (проверять лень было). |
| Часовой пояс GMT +3, время: 06:16. |