/* 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));
&#13;
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;
};
答案 0 :(得分:0)
据我所知,你不能从数组继承。一旦创建了构造函数,它的实例就是对象。当您需要数组的功能时,而是创建一个数组并在其上添加您想要的方法。这可以通过以下功能完成:
function createExtendedArray () {
var a = [];
a.method1 = function() {};
return a;
}