Javascript——arguments的shift问题谈方法“借用”

今天本来运行了打算这样的方法

arguments.shift()

(shift方法是删除数组的第一个元素,例如var arr=[1,2,3,4,5]执行var a=arr.shift();之后,a的值为1,arr的值为[2,3,4,5]。)

参考w3cschool:http://www.w3school.com.cn/jsref/jsref_shift.asp

在IDEA中居然还有这样的代码提示

结果抛出了这样的异常

原来是arguments不是真正的数组,不支持shift,

不过我们可以从支持shift方法的Array对象上“借用”shift方法。

具体实现代码如下:

Array.prototype.shift.apply(arguments)

这里用apply改变了shift方法中的this指针,这样让argument也支持了shift

时间: 2024-10-13 21:18:27

Javascript——arguments的shift问题谈方法“借用”的相关文章

201508110842_《Javascript权威指南(第六版)——方法借用,私有状态,construct重构和工厂方法》(P225-233)

1. 方法借用,就是“继承”,一个类中的原型方法在另一个类中使用. p227 generic对象 2. 私有状态:“将变量闭包在一个匿名函数内来模拟私有变量” ,这些“变量”只能被类的实例方法访问: 3. construct重构: 4. 工厂方法 5. 子类:“方法链”,“构造函数链”,“组合” 6.

javascript中数组的22种方法 (转载)

前面的话 数组总共有22种方法,本文将其分为对象继承方法.数组转换方法.栈和队列方法.数组排序方法.数组拼接方法.创建子数组方法.数组删改方法.数组位置方法.数组归并方法和数组迭代方法共10类来进行详细介绍 对象继承方法 数组是一种特殊的对象,继承了对象Object的toString().toLocaleString()和valueOf()方法 [toString()] toString()方法返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串 [注意]该方法的返回值与不使用任何参数

javascript中数组的22种方法

× 目录 [1]对象继承 [2]数组转换 [3]栈和队列[4]数组排序[5]数组拼接[6]创建数组[7]数组删改[8]数组位置[9]数组归并[10]数组迭代[11]总结 前面的话 数组总共有22种方法,本文将其分为对象继承方法.数组转换方法.栈和队列方法.数组排序方法.数组拼接方法.创建子数组方法.数组删改方法.数组位置方法.数组归并方法和数组迭代方法共10类来进行详细介绍 对象继承方法 数组是一种特殊的对象,继承了对象Object的toString().toLocaleString()和val

在JavaScript中重写jQuery对象的方法

jQuery是一个很好的类库,它给我们解决了很多的客户端编程,任何东西都不是万能的,当它不能满足我们的需求时我们需要对它进行重写,同时也不要影响其原有的功能或者修改其原有的功能:我现在的web应用程序大多数时候的数据交互都是通过Ajax来完成的,这样就可以将一些隐藏字段的数据保存在HTML标签的属性中,使HTML标签的代码量减少,如:ID,Timestamp等等,这些不需要用户输入但又不得不提交的字段,通过表单提交的做法是 <input name="ID" value="

初探JavaScript(一)——也谈元素节点、属性节点、文本节点

Javascript大行其道的时候,怎么能少了我来凑凑热闹^_^ 基本上自己对于js的知识储备很少,先前有用过JQuery实现一些简单功能,要论起JS的前世今生,来龙去脉,我就一小白.抱起一本<Javascript Dom编程艺术>,开始慢慢走近JS,与它套近乎,今天是第三天了,从目前来看,比较好相处.就此动笔,是一个回忆复习的过程,权当是自己的一份读书笔记. JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型,已经被广泛用于Web应用开发,常用来为网

Javascript中call方法和apply方法用法和区别

第一次在博客园上面写博客,知识因为看书的时候发现了一些有意思的知识,顺便查了一下资料,就发到博客上来了,希望对大家有点帮助. 连续几天阅读<javascript高级程序设计>这本书了,逐渐发现了以前很多自己完全没有用过甚至见过的神奇知识点.今天在阅读到有关函数的属性和方法的时候,略感高级,于是乎,查阅了不少他人的博客,在此总结一下这两个方法的以下几个方面: 1.call()和apply()的作用和用法 2.什么时候用apply(),什么时候用call() 书上提到,每个函数都包含两个非继承而来

Javascript数组中shift()和push(),unshift()和pop()操作方法使用

Javascript为数组专门提供了push和pop()方法,以便实现类似栈的行为.来看下面的例子: var colors=new Array();       //创建一个数组 var count=colors.push("red","green");   //  推入两项,返回修改后数组的长度 alert(count);   // 2   返回修改后数组的长度 var item=colors.pop();   //取得最后一项 alert(item);     

JavaScript操作Array对象常用的方法

 转换方法 因为JavaScript内部机制(继承),所有的对象都具有toLocalString() .toString().valueOf()方法,Array也不例外so:var colors = ["red", "blue", "green"];alert(colors.toString()); // red,blue,greenalert(colors.valueOf()); // red,blue,greenalert(colors);

javascript中的call()和apply()方法的使用

1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call 方法可以用来代替另一个对象调用一个方法.call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象. 如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj. apply方法: 语法:apply([thisObj[,argArray]])