Open1

JavaScriptのpushの動作が気になる

kajirikajirikajirikajiri

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}"

https://stackoverflow.com/a/66193986
http://jsfiddle.net/Guffa/9r4gavzb/