標籤: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方法