Инстанс объекта или массива
Есть переменная типа 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, время: 00:17. |