javascript:Array.slice.call 到Array.prototype.slice.call
举个从对象到数组的例子:
var obj={};
obj[1]=1;
obj[2]=2;
obj.length=2;
var arr =Array.prototype.slice.call(obj);
///arr=[1,2]
通过Array.prototype.slice.call生成了一个新的数组,这里能不能通过Array.slice.call(obj)得到相同的结果呢?
通过编译可以知道 Array.slice =slice() Array.prototype.slice =slice()
而call函数只是一个改变对象上下文的方式,换句话说,只要obj里面有length,就可以完成从对象到新数组的过程
但是结果是不行的
Array.slice==Array.prototype.slice >> false
但是上面并不能说明问题,猜测是Array.slice里面并没有算法,而是通过引用的方式,比如retrun this.prototype.slice()
这样的话,当我们调用Array.slice.call(obj)时,由于this已经变成了obj对象,要调用obj.prototype.slice()就无法得到返回结果
javascript:Array.slice.call 到Array.prototype.slice.call的更多相关文章
- JavaScript 兼容 Array.prototype.slice.call
IE9之前的IE版本的HTMLCollection以及NodeList不是Object的子类. 在通过Array.prototype.slice.call进行数组化的时候,IE9之前的IE版本会抛出异 ...
- [转] 理解 JavaScript 中的 Array.prototype.slice.apply(arguments)
假如你是一个 JavaScript 开发者,你可能见到过 Array.prototype.slice.apply(arguments) 这样的用法,然后你会问,这么写是什么意思呢? 这个语法其实不难理 ...
- javascript中 Array.prototype.slice的用法.
首先看到 www.w3school.cn上的解释:http://www.w3school.com.cn/jsref/jsref_slice_array.asp 定义和用法 slice() 方法可从已有 ...
- JavaScript中的Array.prototype.slice.call()方法学习
JavaScript中的Array.prototype.slice.call(arguments)能将有length属性的对象转换为数组(特别注意: 这个对象一定要有length属性). 但有一个例外 ...
- 【javascript 技巧】Array.prototype.slice的妙用
Array.prototype.slice的妙用 开门见山,关于Array 的slice的用法可以参考这里 http://www.w3school.com.cn/js/jsref_slice_arra ...
- javascript:Array.prototype.slice.call(arguments)
我们知道,Array.prototype.slice.call(arguments)能将具有length属性的对象转成数组,除了IE下的节点集合(因为ie下的dom对象是以com对象的形式实现的,js ...
- (转)Array.prototype.slice.call自解
很多框架或者库里面都会有这句的使用,最多的还是通过Array.prototype.slice.call(arguments,0)把arguments这个伪数组转换为真正的数组.但为什么可以这么做,却一 ...
- Array.prototype.slice && Array.prototype.splice 用法阐述
目的 对于这两个数组操作接口,由于不理解, 往往被误用, 或者不知道如何使用.本文尝试给出容易理解的阐述. 数组 什么是数组? 数组是一个基本的数据结构, 是一个在内存中依照线性方式组织元素的方式, ...
- Array.prototype.slice.call(document.querySelectorAll('a'), 0)
Array.prototype.slice.call(document.querySelectorAll('a'), 0)的作用就是将一个DOM NodeList 转换成一个数组. slice()方法 ...
随机推荐
- js console.log 打印 对像 数组 详解
console.log是什么东西,其实就是一个打印js数组和对像的函数而已,就像是php的print_r,var_dump.console.log这个函数本身没什么好说的,这篇博客告诉大家怎么去用这个 ...
- 机器学习之python: kNN
################################################## # kNN : k Nearest Neighbour # Author : Monne # Da ...
- android_demo 之生成颜色
老师说循环出颜色数字 然后显示出来 他说的什么一脸懵逼(=@__@=) 代码还在手上也还是懵逼 (づ。◕‿‿◕。)づ 不管了 留个脚印在这 以后想起来 至少也知道 直接上代码吧 说 ...
- 转:virtualbox+ubuntu设置共享文件夹
1. 进入系统,安装增强功能,安装完关闭系统. 2. 在E盘下创建一个共享文件夹 gongxiang. 3. 设置->数据空间->固定分配,选择共享文件 ...
- USB状态错误原因
USBD_STATUS调试过USB的同学肯定见过BUS Hound里面给的各种错误提示,但是大家是否知道是什么意思呢? USBD_STATUS 出错原因,详解如下: The USBD_STATUS ...
- Delphi IDHTTP用法详解(六种用法)
一.IDHTTP的基本用法 IDHttp和WebBrowser一样,都可以实现抓取远端网页的功能,但是http方式更快.更节约资源,缺点是需要手动维护cook,连接等 IDHttp的创建,需要引入ID ...
- 神舟飞船上的计算机使用什么操作系统,为什么是自研发不是 Linux?
中国航天用的SpaceOS主要内容是仿造美国风河系统公司的VxWorks653(653是产品名,并非版本号). 先解释为什么用这个系统不用Linux: 航天器的内存和CPU都非常弱,弱到什么程度呢:天 ...
- 【HDOJ】1513 Palindrome
DP,MLE后改为滚动数组AC. #include <cstdio> #include <cstring> #include <cstdlib> #define M ...
- Android显示表情对话框
final EditText editface=(EditText) this.findViewById(R.id.EditText); List<Map<String,Object> ...
- 让PV10000+的秘诀
原文地址:http://www.phonegap100.com/article-410-1.html 让PV10000+的秘诀 2015-5-4 21:49| 发布者: admin| 查看: 122| ...