有不同对象的数组可以吗?

时间:2012-06-11 15:22:47

标签: javascript arrays

我需要一个可以容纳不同对象类型的数组,并认为我需要使用某种形式的继承,但后来意识到它已经在Javascript中默认工作了:

var someArray = [];

someArray.push("Hello World");
someArray.push(12);
someArray.push(false);

alert(someArray.pop());
alert(someArray.pop());
alert(someArray.pop());

似乎在JSFiddle中工作。这可能是一个愚蠢的问题,但做这样的事情有什么不对吗?在我的C,C ++,C#,VB .NET等背景中,数组必须是单一类型,所以这种事情对我来说似乎很神奇。这种事情可以做或者只会导致错误和拉毛吗?

2 个答案:

答案 0 :(得分:4)

在javascript中没有强类型的数组,所以没有问题......

答案 1 :(得分:2)

Javascript是一种动态语言,它的数组不是强类型的,所以没关系 这样做:

var x = 12;     // Number
    x = "12";   // String
    x = {};     // Object
    x = [];     // Array.
    ...

每个变量都可以容纳每种类型的对象,它不仅仅是数组...
当您使用typeof运算符时:

if (typeof x === "string")

你不是在“查询”x变量类型,而是它所拥有的值。

  • C#, java, c++ ...:必须声明可变数据类型(静态类型)。
  • Javascript:未声明可变数据类型(动态类型)。