你不能push
任何東西,因爲它不是一個數組,但你仍然可以分配數字的元素,並創建自己的推動。
var makePushable = function (obj) {
obj.push = function (item) {
this[this.length] = item;
this.length++;
};
obj.length = 0; //Keep track of how many elements
}
var name = [];
name.push({ name: "Gareth" });
makePushable(name[0]);
name[0].push({ name: "john" });
name[0].push({ name:"dolly" });
而我們得到:
name[0] ---> {
name:"gareth",
0: {name:"john"},
1: {name:"dolly"},
length: 2,
push: function() { ... }
}
name[0][0] ---> {name:"john"}
name[0][1] ---> {name:"dolly"}
如果你不想push
和length
不露面的for (prop in xxx) if (xxx.hasOwnProperty(prop))
,你可以做一個類,像這樣:
var Pushable = function (obj) {
for (var i in obj) {
this[i] = obj[i];
}
Object.setPrototypeOf(this, {
push: function (item) {
this[this.length] = item;
Object.getPrototypeOf(this).length++;
},
length: 0
});
};
Pushable.prototype.push = function (item) {
this[this.length] = item;
Object.getPrototypeOf(this).length++;
};
Pushable.prototype.length = 0;
var name = [];
name.push(new Pushable({ name:"Gareth" }));
name[0].push(new Pushable({ name: "john" }));
name[0].push(new Pushable({ name:"dolly" }));
name[0][1].push(new Pushable({ name:"last kid" }));
你可以使push
功能,如果你想要自動創建一個Pushable
類。
你是正確的,你就必須改變你的數據結構,或許,你可以添加一個' ''arr''屬性到你的''name [0]''。並做''name [0] .arr [0] - > {name:「john」}'' – Winestone 2014-10-12 11:54:57
怎麼辦?你能通過代碼告訴我嗎?考慮如果可能的話它會有動態appoarch。否則至少要做Oth指數。 – micronyks 2014-10-12 11:57:26
這聽起來像是一個「X-Y」問題。開始解釋用例 – charlietfl 2014-10-12 12:01:23