Open1
JavaScriptのpushの動作が気になる
objectのlength propertyに依存している。
なので、以下のようにして動作させることができる。
var o = {
length: 0,
push: Array.prototype.push,
pop: Array.prototype.pop
};
o.push(1);
console.log(JSON.stringify(o));
o.push(2);
console.log(JSON.stringify(o));
console.log(o.pop());
console.log(JSON.stringify(o));
console.log(o.pop());
console.log(JSON.stringify(o));
"{\"0\":1,\"length\":1}"
"{\"0\":1,\"1\":2,\"length\":2}"
2
"{\"0\":1,\"length\":1}"
1
"{\"length\":0}"