---
title: js面试题01自定义unshift
date: 2026-08-26
tags:
- 技术
description: 文章摘要
---let arr = [2,3]
let newlength = arr.unshift(0,1);
console.log(arr);//[0,1,2,3]
console.log(newlength);//[4]unshift() 是数组原型(Array.prototype)上的一个核心方法。它的作用非常明确:将一个或多个元素添加到数组的开头(修改原数组),并返回数组新的长度。从上面的样例可以看出是将元素按顺序插入,并且 返回值返回的是新数组的 length 属性值,而非返回新数组本身。
额外:关于数组原型
Array.prototype 是一个对象。它是所有通过 new Array() 或字面量 [] 创建的数组实例的原型。
它本身也是一个数组(Array.isArray(Array.prototype) === true),但通常它的长度被设计为 0,主要用作基类。
它里面没有存储具体的数据(如 [1,2,3]),而是存储了所有实例共享的方法和属性。
//通过自定义函数实现原生数组unshift的效果;往数组头插入元素
let arr =[1,2,3]
//多定义一层prototype可以给其他数组都增加该自定义方法(原型链继承)
Array.prototype.myunshift = function(){
console.log('当前的 this 指向:', this); // 控制台会打印出 [1, 2, 3]
//谁调用了方法,this就指向谁;
console.log('this === arr ?', this === arr); // 控制台打印 true
const len = arguments.length;//arguments就是接收的数组
//不是箭头函数就可以用argument当作接收的数组
for(let i = len - 1;i >= 0; i--){ //条件2是继续循环的条件
const element = arguments[i]
this.splice(0,0,element) //splice用法:从第0个元素,替代0个元素,插入element
}
return this.length;
}
console.log(arr.myunshft(3,4,5))//6
console.log(arr); // 3, 4, 5, 1, 2, 3;这里逻辑是从后面先加进数组头;