我之前问过为什么backbone.js 的_.isArray(arr)
函数仍然返回true,即使我做了类似的事情,
var a = [];
a.something = "test";
因为我有点期望它会变成一个[object Object]
(不确定这是否是引用你这样做时生成的对象的正确方法var o = {}
,但我说的是你可以使用 key: value 对的对象类型。任何有关如何引用该对象的见解都非常受欢迎。
我收到的答案是它不会改变数据类型a
,只是将属性添加something
到它。我可以在控制台中看到我得到了 a.something = "test",但是它存储在哪里?它在数组的原型中吗?(我很确定不是)。但是,简单的“添加属性”是什么意思?
var a = "";
a.asdf = "test";
a.zxcv = "test1";
不会以类似的方式返回属性,因为字符串不是对象,但函数应该是对象,然而
var a = function(){};
a.asdf = "test";
a.zxcv = "test1";
console.log(a);
只返回
function (){
}
(它看起来像一个字符串......)我不知道为什么我不能这样做var a = new Function()
(即使我以前从未见过它);它返回与上面相同的内容。jslint 也说它是 eval。为什么..?
我只是想弄清楚“向对象添加属性”的含义以及这些属性“去向”的位置,以及为什么它们在不同类型的对象中的行为不同