当前第2页 返回上一页
1 2 3 4 | var arr1 = [1, 2, 3];
var arr2 = [66, 99, 131];
Array.prototype.push.apply(arr1, arr2);
console.log(arr1);
|
同样将arr2数组作为参数传递。
而对于无序,相互之间没有什么关联的参数,就使用call()
获取数组的最大值和最小值
1 2 3 4 5 6 7 8 9 10 | var arr = [0, 1, 2, 3, 4];
var max1 = Math.max.apply(Math, arr),
max2 = Math.max.call(Math, 0, 1, 2, 3, 4),
min1 = Math.min.apply(Math, arr),
min2 = Math.min.call(Math, 0, 1, 2, 3, 4);
console.log(max1, max2, min1, min2);
|
arr本身是没有Math方法的,但是我们可以用call或者apply使用其方法
判断对象的具体类型
1 2 3 4 | var arr = [];
var type = Object.prototype.toString.call(arr);
console.log(type);
|
在使用typeof时得到的结果都是Object,无法判断具体是哪一种类型。于是可以用 Object.prototype.toString.call()来获得具体类型。当然,前提是toSting()方法没有被重写过
将类数组对象转为真正的数组,通常我们使用Array.prototype.slice.call() 来转换
1 2 3 4 5 6 7 8 9 | var arrLike = {
length: 3,
0: '值1' ,
1: '值2' ,
2: '值3'
}
var newArr = [].__proto__.slice.call(arrLike);
var type = Object.prototype.toString.call(newArr);
console.log(newArr, type);
|
当然,splice,concat也可以将类数组对象转数组
.
这里普及一下类数组对象
。
通过索引访问元素,并且拥有length属性
也就是说,需要满足两个条件,1.使用序号定义属性,2.拥有length属性,属性值为元素个数
在使用序号定义属性时,建议从0开始按顺序定义属性。否则会出现数组元素为empty的情况
1 2 3 4 5 6 7 8 9 | var arrLike = {
length: 3,
0: '值1' ,
1: '值2' ,
3: '值3'
}
var newArr = [].__proto__.slice.call(arrLike);
var type = Object.prototype.toString.call(newArr);
console.log(newArr, type);
|
本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注PHP中文网的JavaScript视频教程栏目!
以上就是函数apply()和call()的详细介绍的详细内容,更多文章请关注木庄网络博客!
返回前面的内容
相关阅读 >>
javascript背景图片怎么导入
javascript在nodejs环境下执行机制和事件循环
javascript预编译做了啥
javascript中load用法是什么
javascript怎么添加元素
javascript加载:defer与async
javascript中const和object.freeze()的差异
深入分析javascript的module模式编程
一起看看 php javascript 语法对照
javascript中this的用法有哪些
更多相关阅读请进入《javascript》频道 >>
人民邮电出版社
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者
转载请注明出处:木庄网络博客 » 函数apply()和call()的详细介绍