1。Array.prototype:就是Array的原型,很多时候理解这个原型有点不清不楚的
其实,有点像.NET里的反射
一个类凡是通过prototype加的属性,方法,都可以在这个类的对象里找到 对象.
有时候我们也直接在某一对象添加属性方法,那么只能这个对象里找到,重新创建的对象是没有
刚刚在上一对象里添加的属性方法的
内置的类型可以通过prototype找到内置的属性方法
Array.prototype.slice这句就是访问Array的内置方法
因为Array是类名,而不是对象名,所以不能直接用Array.slice
2。接下来说slice方法,这个简单
返回一个数组的一段。arrayObj.slice(start, [end]) 参数开始索引和结束索引,结束索引可以省略
3。call方法
call([thisObj[,arg1[, arg2[, [,.argN]]]]])
调用一个对象的一个方法,以另一个对象替换当前对象
说明
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。
如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。
这东西JS文档里我没找到怎么调用这个方法,功能是 调用一个对象的一个方法 自己的参数只有方法的所有者对象和要调用的方法参数,
查过资料才知道,Array.prototype.slice.call 是这么调用,只要 typesof fn ==="function" 的 fn类型都有 call 方法
伪组数元素
为什么要这么调用 arguments 的slice 方法呢?就是因为 arguments 不是真的组数,typeof arguments==="Object" 而不是 "Array"
它没有slice这个方法,通过这么Array.prototype.slice.call调用,JS的内部机制应该是 把arguments对象转化为Array
因为Array.prototype.slice.call调用后,返回的是一个组数
经典例子:
<script type= "text/javascript" > //<![CDATA[
function classA() {
this .name= 'bluedestiny' ;
this .show = function () {
alert( this .name);
}
} function classB() {
this .name = 'never-online' ;
} var objA = new classA();
var objB = new classB();
objA.show.call(objB); //]]></script> |
跟call类似的还有 apply 方法
应用某一对象的一个方法,用另一个对象替换当前对象。
apply([thisObj[,argArray]])
参数
说明
如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。
如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。
呵呵,这么火星的功能,实在是少见啊,估计也就是JS里
两者的区别: 对于apply和call两者在作用上是相同的,但两者在参数上有区别的。 对于第一个参数意义都一样,但对第二个参数: apply传入的是一个参数数组,也就是将多个参数组合成为一个数组传入,而call则作为call的参数传入(从第二个参数开始)。 如 func.call(func1,var1,var2,var3)对应的apply写法为:func.apply(func1,[var1,var2,var3]) 同时使用apply的好处是可以直接将当前函数的arguments对象作为apply的第二个参数传入
相关推荐
主要介绍了JS Array.from()将伪数组转换成数组的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
js中将HTMLCollection NodeList 伪数组转换成数组的代码.docx
js中将HTMLCollection/NodeList/伪数组转换成数组的代码,需要的朋友可以参考下。
javascript与dom有许多瑕疵,如著名的类数组对象Arguments,其他诸如HTMLCollection,NodeList如果它们都是数组的子类,那多省时啊。
这里把符合以下条件的对象称为伪数组 1,具有length属性 2,按索引方式存储数据 3,不具有数组的push,pop等方法 如 1,function内的arguments 。 2,通过document.forms,Form.elements,Select.options,document....
本文实例分析了JavaScript类数组对象转换为数组对象的方法。分享给大家供大家参考,具体如下: 1、类数组对象: 拥有length属性,可以通过下标访问; 不具有数组所具有的方法。 2、为什么要将类数组对象转换为数组...
php将对象转成数组,php将xml转成数组 一个自定义函数搞定纯原创。
把XML数据转换成php数组形式。
音频文件数组转成c语言的数组音频文件数组转成c语言的数组音频文件数组转成c语言的数组音频文件数组转成c语言的数组音频文件数组转成c语言的数组音频文件数组转成c语言的数组音频文件数组转成c语言的数组
将汉字转换成数组,便于开发人员开发时用点阵液晶显示文字
|PowerBuilder 数组字符串相互转化 天津 李华锋 * * | | * *PowerBuilder 数组字符串相互转化 完全免费 * * | | * *如果你将这个程序放在你的网站上,我希望你能同时加上本站的链接 | | * | * | * *老字符串转数组...
但是为了使后台接收上传文件的方法既使用网页上传,又适应桌面应用程序上传,方法的参数设置成两个,一个为字符串类型,接收文件名,另一个为字节数组类型,用于接收文件内容。对于桌面应用,把文件内容读取到字节...
PHP 将 XML文件或内容直接转成数组,在用PHP读取XML文档时很是方便!
将数据转换成数组 可将MP3文件转换成数组文件,便于开发
VC字符串分割成数组.docVC字符串分割成数组.docVC字符串分割成数组.docVC字符串分割成数组.docVC字符串分割成数组.docVC字符串分割成数组.docVC字符串分割成数组.docVC字符串分割成数组.docVC字符串分割成数组.docVC...
mtk不同类型的铃声转换成数组的具体过程。