2010-09-13 3 views
0

У меня есть объект mystery в Javascript - пожалуйста, кто-нибудь может сказать мне, как инициализировать аналогичный объект?Определение типа объекта в JavaScript

Фон: Я унаследовал код, который получает объект params из Flash. Я хочу «подделать» тот же вызов, который требует ручного построения одного и того же объекта. Но я не могу понять, как это сделать, потому что я не знаю, какой тип объекта он есть. (Это не содержания вот проблема: это как инициализацию объекта.)

Пожалуйста, может кто-нибудь сказать мне, является ли params объектом следующего массива, список, хэш или что-то еще - или по крайней мере, как я могу это сделать для себя, учитывая, что в JavaScript нет typeof?

function doSomething(params) { 
    var txt; 
    for (p in params) { 
     txt = txt + "param:" + p + ", " + params[p] + "\n"; 
    } 
    return txt; 
} 

Спасибо!

+6

'при условии, что нет TypeOf в JavaScript' кто ОЭЗ? : D Try 'alert (typeof params);' –

+0

У JavaScript действительно есть 'typeof' - однако он возвращает' 'object'' для объектов и массивов. JavaScript не имеет отдельного типа списка. –

+2

Прежде всего, используйте console.log (params) для проверки этого объекта. –

ответ

1

Это будет предупреждать тип «параметров».

function doSomething(params) { 
    alert("Type of params variable: " + typeof params); 
    var txt = '', p; 
    for (p in params) { 
     txt += "param:" + p + ", " + params[p] + "\n"; 
    } 
    return txt; 
} 

Если вы просто хотите, чтобы перехватить переменные и передать параметры к исходной функции, попробуйте следующее:

window.originalFunction = doSomething; 
window.doSomething = function(param1){ 
    // do something with param1 
    return window.originalFunction(param1); 
}; 

Чтобы проверить params является ли массив или нет, попробуйте:

alert(params instanceof Array); 
0

Вы можете думать об этом как о хэше. В вашем примере p - это имя свойства и params[p] обращается к значению этого именованного свойства.

И, как обычно, Пекка прав. Там определенно is Оператор «typeof» в Javascript. Я не знаю, где у вас есть идея, что нет.

+0

спасибо. Справедливости ради, Javascript 'typeof' не различает массивы и объекты, о которых я до сих пор не знал. –

0

Судя по ней, params выглядит как словарь

0

Там нет списков, хэши, словари (и т.д.) в JavaScript. Есть только объекты и массивы (а массивы - это тип объекта).

Учитывая, что код использует for... in, похоже, что это будет объект. То есть контейнер с именованными членами. Помимо этого, это зависит от того, как объект был инициализирован.

Если вы хотели бы сделать копию объекта, попробуйте использовать его прототип:

var copy = {}; 
copy.prototype = params 
Смежные вопросы