前端基础类学习

JS中的小技巧

2017-11-16  本文已影响21人  饥人谷_米弥轮
<script type="text/javascript">
    //使用length清空数组
    var arr1 = arr2 = [1, 2, 3];
    //arr1.length = 0;
    //console.log(arr2);

    //利用Length缩减数组
    var arr = [1,2,3,4,5,6,7,8,9,10];
    arr.length = 5; 
    console.log(arr);

    //合并数组,push方法合并数组
    var arr1 = [1, 2, 3];
    var arr2 = [4, 5, 6];
    var arr3 = arr1.concat(arr2);   //传统方法
    console.log(arr3);

    var arr1 = [1, 2, 3];
    var arr2 = [4, 5, 6];
    var arr3 = [];
    //改变this指向arr3
    Array.prototype.push.apply(arr1, arr2); //利用apply接收参数为数组的特性进行push
    console.log(arr1);


    //特性检测
    var obj = document.getElementById("box");
    if (obj.addEventListener) { //如果使用这种方法去检测该对象是否有这个方法,就会在该对象中添加上addEventListener这个属性,只是值为undefined;如果无用属性一多就会减低性能
        obj.addEventListener();
    } else {
        obj.attachEvent();
    }

    var obj = document.getElementById("box");
    if ("addEventListener" in window) { //所以只需要用in去判定属性是否存在于该对象中就可以了
        obj.addEventListener();
    } else {
        obj.attachEvent();
    }

    //检测一个对象是不是数组
    //在JavaScript里, 可以用 typeof 来检查变量类型. typeof 可以返回: number , boolean, string, object, function 和 undefined. 并没有 array . 实际上数组是object类型. 那么怎么来验证对象是否是数组呢? 在最新的ECMAScript 5中, 可以用 Array.isArray(object) 来检验.
    
    //用typeof检查变量类型为Object的对象都包含一个内部属性[Class](可以看佐一种内部分类,而不是传统面向对象意义上的类),这个属性无法直接访问
    //但可以通过Object.prototype.toString.call(variable)获取到一个展示类型的字符串
    // Object.prototype.toString.call(/regex-literal/i)  ==> "[object RegExp]"

    var arr = {};
    var isArray = Object.prototype.toString.call(arr) == "[object Array]";
    console.log(isArray);
</script>
上一篇 下一篇

猜你喜欢

热点阅读