码迷,mamicode.com
首页 > 移动开发 > 详细

apply和call方法

时间:2018-07-25 23:51:41      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:res   win   bsp   push   pre   转换   apply   tor   selector   

 真伪数组转换

/*
apply和call方法的作用:
专门用于修改方法内部的this

格式:
call(对象, 参数1, 参数2, ...);
apply(对象, [数组]);
*/
function test() {
    console.log(this);
}
// window.test();
var obj = {"name": "lnj2"};
/*
1.通过window.test找到test方法
2.通过apply(obj)将找到的test方法内部的this修改为自定义的对象
*/
// window.test.apply(obj);
// window.test.call(obj);

function sum(a, b) {
    console.log(this);
    console.log(a + b);
}
// window.sum.call(obj, 1, 2);
/*
1.通过window.sum找到sum方法
2.通过apply(obj)将找到的sum方法内部的this修改为自定义的对象
3.将传入数组中的元素依次取出, 传递给形参
*/
// window.sum.apply(obj, [3, 5]);

// var arr = [];
// arr.push(1);
// console.log(arr);

// 真数组转换伪数组的一个过程
// var arr = [1, 3, 5, 7, 9];
// var obj = {};
/*
1.通过[].push找到数组中的push方法
2.通过apply(obj)将找到的push方法内部的this修改为自定义的对象
3.将传入数组中的元素依次取出, 传递给形参
*/
// [].push.apply(obj, arr);
// console.log(obj);
window.onload = function (ev) {
    // 系统自带的伪数组,低级浏览器下没问题
    var res = document.querySelectorAll("div");
    // 自定义的伪数组,低级浏览器下有问题
    var obj = {0:"lnj", 1:"33", length: 2};
    // var arr = []; // 真数组
    // [].push.apply(arr, obj);
    // console.log(arr);

    // 如果想将伪数组转换为真数组那么可以使用如下方法
    var arr = [].slice.call(obj);
    console.log(arr);
    // var arr2 = [1, 3, 5, 7, 9];
    // 如果slice方法什么参数都没有传递, 会将数组中的元素放到一个新的数组中原样返回
    // var res2 = arr2.slice();
    // var res2 = arr2.slice(2);
    // var res2 = arr2.slice(2, 4);
    // console.log(res2);
}

 

apply和call方法

标签:res   win   bsp   push   pre   转换   apply   tor   selector   

原文地址:https://www.cnblogs.com/zzxuan/p/9368928.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!