javascript:Array.slice.call 到Array.prototype.slice.call
2015-12-01 23:39
639 查看
举个从对象到数组的例子:
通过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()就无法得到返回结果
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()就无法得到返回结果
相关文章推荐
- JSP 自定义标签 (custom tags) 入门介绍
- js传参数的问题。
- 使用T4模板合并js文件
- 浅谈JavaScript浮点数及其运算
- JavaScript中的事件函数传参
- Protobuf与Json互转
- 搭建 tty.js:一款基于浏览器的终端模拟器
- javascript实现无兼容性问题返回顶部
- JSP之监听器Listener(二)
- 利用JS将后台返回的数据分页展示
- JavaScript初体验--Cookie
- JavaScript初体验--Cookie
- javascript加入收藏夹 设置首页
- JS温习:基础(四) 继承,原型
- JS温习:基础(三)
- 点餐,购物车抛物线效果
- JSP之监听器Listener(一)————————ServletContextListener
- JavaScript
- JavaScript DOM对象控制
- JS之数组中的冒泡排序