Изучив все комментарии и решения выше, я могу предложить полностью готовое решение на их основе:
Object.prototype.pop = function() {
for (var key in this) {
if (!Object.hasOwnProperty.call(this, key)) continue;
var result = this[key];
if (!delete this[key]) throw new Error();
return result;
}
};
var obj = {
a: '1',
b: '2',
c: '3'
};
console.log(obj.pop()); // 1
console.log(obj.pop()); // 2
console.log(obj.pop()); // 3
console.log(obj); // Object { }
Возможно, кому-то пригодится; )
PS. Если вы используете предложенный мной код вместе с библиотекой jQuery, вы можете столкнуться с ошибками в консоли. В этом случае уместен вариант, указанный ниже:
function _pop() {
for (var key in this) {
if (!Object.hasOwnProperty.call(this, key)) continue;
if (key === 'pop') continue;
var result = this[key];
if (!delete this[key]) throw new Error();
return result;
}
}
var obj = {
a: '1',
b: '2',
c: '3'
};
obj.pop = _pop;
console.log(obj.pop()); // 1
console.log(obj.pop()); // 2
console.log(obj.pop()); // 3
console.log(obj); // Object { pop: _pop() }