为什么子类数组的JSON字符串化是一个对象
Why is the JSON stringification of a subclassed array an object?
/* StackOverflow needs a console API */ console.log = function(x) { document.write(x + "<br />"); };
B = function() {}
B.prototype = Array.prototype;
var a = new Array();
var b = new B();
a[0] = 1;
b[0] = 1;
console.log(JSON.stringify(a));
console.log(JSON.stringify(b));
JSON字符串将子类作为对象({ "0": 1 }
)而不是数组([1]
)`
有什么方法可以改变这种行为吗?
编辑
我正在使用(不可协商的)ES5。我稍微简化了这个例子。实际上,子类化是通过函数inherit()
来设置的,该函数可以执行以下操作:
var inherit = function(base, derived) {
function F() {}
F.prototype = base.prototype;
derived.prototype = new F();
derived.prototype.constructor = derived;
};
据我所知,您不能从数组继承。一旦创建了构造函数,它的实例就会成为对象。当你想要一个数组的功能时,最好创建一个数组并在上面添加你想要的方法。这可以通过一个功能来完成:
function createExtendedArray () {
var a = [];
a.method1 = function() {};
return a;
}
相关文章:
- JavaScript:如何创建一个具有字符串名称的对象
- 在不使用循环的情况下,从一个数据库字符串值向javascript数组添加多个对象
- 获取一个对象´s属性的名称使用字符串
- 我需要使用什么语法来向一个对象的成员添加一个临时数组,该成员等同于一个字符串的通用列表
- 通过另一个对象上的字符串值为 javascript 对象属性赋值
- 使用拆分字符串的数组创建一个对象
- 我想返回一个对象,但我得到一个字符串
- 为什么“ 新字符串('我的字符串');“ 返回一个对象?但是“ 字符串(”我的字符串“);“返回一个字符
- 解析字符串以创建一个对象数组,javascript
- 新字符串的类型(“aaa”)==;对象“;?一切事物都是一个对象,但也有原始类型
- 为什么子类数组的JSON字符串化是一个对象
- JS:遍历一个对象's的子对象,检查<b、 按子对象解析's子字符串
- 我可以使用一个空字符串作为对象标识符吗
- 从字符串创建一个对象.种
- 我可以让一个json字符串化的对象有一个字段,其值是Javascript中的双精度
- javascript[对象窗口]在一个concat字符串
- Javascript传递一个字符串来创建一个对象名(菜鸟)
- 我不能解析一个对象从字符串到对象在javascript
- 如何使用' this '像一个对象,并通过字符串获得它的变量/函数
- 如何在字符串对象的两个对象之间添加逗号,而不是最后一个对象