美文网首页
JS基础技巧

JS基础技巧

作者: Iswine | 来源:发表于2017-02-13 23:12 被阅读0次

    最近刷题发现自己的JS基础并不是很牢固,所以把一些心得,技巧,易错点记录下来,方便复习。
    1.创造出一个与原数组无关系,但值又完全一样的数组:
    <blockquote>
    数组是引用类型,通过newArr = arr造出来的数组与原数组完全一样,所以不行。
    通过for循环固然可以创建一个新的数组,但更好的方式是用newArr = arr.slice(0)
    同时,如果想在新数组上增删,用pop(),push(),shift(),unshift()自然不会错,更合适的是将复制数组与增删合并,活用arr.concat(),arr.slice()
    </blockquote>

    2.数组,字符串的删除方法
    <blockquote>
    arr.slice(start,end)
    ①不改变原数组;②返回值为新数组;③支持负号(即从后往前);④切下来的包括start不包括end。
    arr.splice(index,removeCount,[appendItem1],...)
    ①改变原数组;②返回值为删掉的元素组成的数组;③不支持负号;


    字符串实际上是先将str转化成new String(str),之后调用了方法,因此都不会改变原值。
    str.slice(start,end)
    和arr基本一样;
    str.substr(start,removeCount)
    和slice的区别在于第二个参数为删除的个数;
    str.substring(start,end)
    不支持负数,会将负数归零,并会自动将0前置。
    </blockquote>

    3.类数组=》数组:
    在JS中有很多类数组,例如函数的arguments,DOM的node.children(),getElementsByXXX等等,所得的结果均是类数组,将其转换为数组才能使用数组的方法。
    var arr = [].slice.call(类数组)

    4.Object.hasOwnPropery / for(key in obj)
    Object.hasOwnProperty(str):用于检查Object自身是否拥有以str为名的属性或方法;
    for(let key in obj):尽可能枚举所有obj中的属性、方法名,包括原型链上的。
    这两者的区别在于

    • 用法:一个是返回的boolean,用于检测是否存在;另一个用于枚举,循环返回字符串;
    • 作用范围:一个专注于自身对象,另一个拓展至对象所继承的原型链;

    所以常常组合使用两者:

    function Observer(data){
        this.data = data;
        this.get= function(){
       }
    }
    Obj.prototype.set = function(){
    }
    
    for(let key in obj){
        if(obj.hasOwnPropety(key)){
             
        }
    }
    

    相关文章

      网友评论

          本文标题:JS基础技巧

          本文链接:https://www.haomeiwen.com/subject/nxjtwttx.html