手写Array.prototype.pop
May 24, 2020
前端知识复习 code snippet
- Let O be ? ToObject(this value).
- Let len be ? LengthOfArrayLike(O).
If len is zero, then
- Perform ? Set(O, "length", 0, true).
- Return undefined.
Else,
- Assert: len > 0.
- Let newLen be len - 1.
- Let index be ! ToString(newLen).
- Let element be ? Get(O, index).
- Perform ? DeletePropertyOrThrow(O, index).
- Perform ? Set(O, "length", newLen, true).
- Return element.
代码
Array.prototype.myPop = function () {
var O = Object(this);
var len = O.length >>> 0;
if (len == 0) {
O.length = 0;
return undefined;
} else {
var element = O[--len];
delete O[len];
O.length = newLen;
return element;
}
};