Array.prototype.slice.call 和 slice以及call
单独的简单介绍,后续再补上一些资料.
对象转换为数组.
/**
* slice : 数组->slice(截取)
* 参数有两个,开始截取和结束截取,并返回原数组:
* a.slice(1) || a.slice(1,3) => a.slice(start) || a.slice(start,[end])
*
*/
var a = [1, 5, 7, 8, 9];
var b = a.slice(1, 3);
// console.log(b); /**
* call:对象->call()
* 源于:MDN示例 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call
* 语法:function.call(thisArg, arg1, arg2, ...)
* 参数:
* thisArg 可选的。注意,this可能不是方法看到的实际值:如果方法是非严格模式下的函数,null并且undefined将被全局对象替换,则原始值将被转换为对象。
* arg1, arg2, ...可选的。函数的参数。
* 描述:
* 该call()允许函数/方法属于被分配并要求一个不同的对象一个对象。
* call() 为 函数/方法提供了这个新值。使用 call,您可以编写一次方法,然后在另一个对象中继承它,而不必重写新对象的方法。
*/
function product(name, price) {
this.name = name;
this.price = price;
} function food(name, price) {
product.call(this, name, price);
} console.log(new food('cheese', 6).name, 'food函数,成功调用起product的函数'); // function disInfo() {
// console.log('恭喜你成功调用起call!~');
// }
// console.log(disInfo.call()) function toArray() {
return [].slice.call(arguments);
// return [].slice.call(arguments,0);
// return Array.prototype.slice.call(arguments);
}
console.log(toArray(1, 3, 5, 6, 7)); /**
* Array.prototype.slice.call(arguments)能将具有length属性的对象转成数组
*/ var obj = {
length: 3,
0: 'a',
1: 'b',
2: 'c'
} var obj_1 = {
0: 'a',
1: 'b',
2: 'c'
} console.log(obj.length)
ES6写法:
// ES6新出的方法,必须要求提供其长度,才能正确换为数组
let arrayLike = {
'0': 'a',
'1': 'b',
'2': 'c',
length: 3
};
console.log(Array.from(arrayLike));
Array.prototype.slice.call 和 slice以及call的更多相关文章
- 【javascript 技巧】Array.prototype.slice的妙用
Array.prototype.slice的妙用 开门见山,关于Array 的slice的用法可以参考这里 http://www.w3school.com.cn/js/jsref_slice_arra ...
- Array.prototype.slice.call(arguments)
Array.prototype.slice.call(arguments)能够将具有length属性的对象转化为数组, 可以理解为将arguments转化成一个数组对象,让它具有slice方法 如: ...
- IE下Array.prototype.slice.call(params,0)
i8 不支持 Array.prototype.slice.call(params,0) params可以是 HTMLCollection.类数组.string字符串
- (转)Array.prototype.slice.call自解
很多框架或者库里面都会有这句的使用,最多的还是通过Array.prototype.slice.call(arguments,0)把arguments这个伪数组转换为真正的数组.但为什么可以这么做,却一 ...
- 详解 Array.prototype.slice.call(arguments)
首先,slice有两个用法,一个是String.slice,一个是Array.slice,第一个返回的是字符串,第二个返回的是数组 在这里我们看第二个方法 1.在JS里Array是一个类 slice是 ...
- 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()方法 ...
- Array.prototype.slice.call
Array.prototype.slice.call(arguments)能将具有length属性的对象转成数组 ,::'age'}; Array.prototype.slice.call(arr); ...
- Array.prototype.slice.call(arguments) 类数组转成真正的数组
Array.prototype.slice.call(arguments) 我们知道,Array.prototype.slice.call(arguments)能将具有length属性的对象转成数 ...
- JavaScript 兼容 Array.prototype.slice.call
IE9之前的IE版本的HTMLCollection以及NodeList不是Object的子类. 在通过Array.prototype.slice.call进行数组化的时候,IE9之前的IE版本会抛出异 ...
随机推荐
- FastReport.Net使用:[20]条码控件使用
在日常生活中,条码用的越来越多,“扫一扫”目前是非常的流行.报表设计也要跟上时代,打印出条码,方便信息流转. FastReport对条码的支持很不错,支持很多类型的条码,还包括二维码. 几个常见问题 ...
- java8新特性——Stream API
Java8中有两大最为重要得改变,其一时Lambda表达式,另外就是 Stream API了.在前面几篇中简单学习了Lambda表达式得语法,以及函数式接口.本文就来简单学习一下Stream API( ...
- 【BZOJ 2916】 2916: [Poi1997]Monochromatic Triangles (容斥)
2916: [Poi1997]Monochromatic Triangles Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 310 Solved: 1 ...
- BZOJ 3626: [LNOI2014]LCA 树链剖分 线段树 离线
http://www.lydsy.com/JudgeOnline/problem.php?id=3626 LNOI的树链剖分题没有HAOI那么水,学到的东西还是很多的. 我如果现场写,很难想出来这种题 ...
- 9.3n+1问题
时间限制: 1 s 空间限制: 32000 KB 题目等级 : 白银 Silver 题解 查看运行结果 题目描述 Description 3n+1问题是一个简单有趣而又没有解决的数学问题.这个问题是由 ...
- ThinkPHP -- 基础入门
ThinkPHP文件结构说明: |——ThinkPHP.php 框架入口文件 |——Common 框架公共文件目录 |——Conf ...
- Android EditText 限制输入为ip类型
editText.setInputType(InputType.TYPE_CLASS_NUMBER); String digits = "0123456789."; editTex ...
- 《C# to IL》第二章 IL基础
如果你真的想要理解C#代码,那么最好的方法就是通过理解由C#编译器生成的代码.本章和下面两章将关注于此. 我们将用一个短小的C#程序来揭开IL的神秘面纱,并解释由编译器生成的IL代码.这样,我们就可以 ...
- Codeforces Round #247 (Div. 2) ABC
Codeforces Round #247 (Div. 2) http://codeforces.com/contest/431 代码均已投放:https://github.com/illuz/Wa ...
- Circuit forms adjustable bipolar clamp
The easy way to clamp a signal to a given value is to use two zener diodes, connected back-to-back. ...