Javascript 数组中有不同的对象,好吗?
我需要一个可以容纳不同对象类型的数组,我想我需要使用某种形式的继承,但后来意识到它在Javascript中已经默认工作了:Javascript 数组中有不同的对象,好吗?,javascript,arrays,Javascript,Arrays,我需要一个可以容纳不同对象类型的数组,我想我需要使用某种形式的继承,但后来意识到它在Javascript中已经默认工作了: var someArray = []; someArray.push("Hello World"); someArray.push(12); someArray.push(false); alert(someArray.pop()); alert(someArray.pop()); alert(someArray.pop()); 似乎在JSFIDLE中工作。这可能是个
var someArray = [];
someArray.push("Hello World");
someArray.push(12);
someArray.push(false);
alert(someArray.pop());
alert(someArray.pop());
alert(someArray.pop());
似乎在JSFIDLE中工作。这可能是个愚蠢的问题,但这样做有什么不对吗?在我的背景下,C、C++、C、VB、NET等数组需要是单一类型的,所以这种事情对我来说似乎很神奇。这样做可以吗,还是只会导致bug和头发拉扯?数组在javascript中不是强类型的,所以没有问题……javascript是一种动态语言,它的数组不是强类型的,所以它很好。
这也是:
var x = 12; // Number
x = "12"; // String
x = {}; // Object
x = []; // Array.
...
每个变量都可以容纳每种类型的对象,不仅仅是数组…使用
typeof
运算符时,如:
if (typeof x === "string")
您不是在“查询”x变量类型,而是它所包含的值。
:未声明变量数据类型(动态键入)李>Javascript
var
。或者阅读以下内容:“var.隐式类型的局部变量是强类型的,就像您自己声明了类型一样,但编译器确定了类型。”@Flambino:我只是认为它会根据插入的第一个对象来确定。@RyanPeschel。如果您熟悉C#,您应该知道var
这里与C#
中的情况不同……实际上,对于不是强类型的C#ArrayList
,您也可以这样做。