2010-09-13 101 views
0

我在Javascript中有一个神秘对象 - 请问有人能告诉我如何初始化一个类似的对象吗?确定JavaScript中对象的类型

背景:我已经继承了一些通过Flash的params对象的代码。我想'假'相同的调用,这需要手动构建相同的对象。但我不知道如何去接受它,因为我不知道它是什么类型的对象。 (这不是内容这就是问题所在:它是如何初始化的对象。)

请会有人告诉我params对象下面是一个数组,列表,散列或别的东西 - 或者在至少我怎么能为自己工作,因为在JavaScript中没有typeof

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

谢谢!

+6

'因为有在JavaScript中没有的typeof'经济特区谁? :D试试'alert(typeof params);' – 2010-09-13 18:39:02

+0

JavaScript确实有'typeof' - 但是,它返回对象和数组的''object''。 JavaScript没有_not_有一个单独的列表类型。 – 2010-09-13 18:40:26

+2

首先,使用console.log(params)来检查该对象。 – 2010-09-13 18:47:42

回答

1

这会提醒'params'的类型。

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]将访问该指定属性的值。

和往常一样,佩卡是对的。绝大多数肯定是 Javascript中的“typeof”运算符。我不知道你有没有想到的地方。

+0

谢谢。尽管如此,Javascript的'typeof'不能区分数组和对象,直到现在我才知道它。 – 2010-09-13 18:46:23

0

从外观上来看,params看起来像一本字典

0

没有列出,散列,字典(等)的JavaScript。只有对象和数组(而数组是对象的一种类型)。

鉴于代码使用for... in,它看起来像是一个Object。也就是说,一个名为成员的容器。除此之外,它取决于对象如何初始化。

如果你想使对象的副本,请尝试使用它的原型:

var copy = {}; 
copy.prototype = params 
相关问题