美文网首页
javascript中的Array.prototype.slic

javascript中的Array.prototype.slic

作者: Hathaway_桉 | 来源:发表于2017-05-08 15:42 被阅读0次

    Array.prototype. slice.call(arguments)能够将具有length属性的对象转化为数组,

    var a={length:2,0:'first',1:'second'};
     Array.prototype.slice.call(a);//  ["first", "second"]
    

    先看call的用法:

    var a = function(){
    console.log(this);    // 'littledu'
    console.log(typeof this);      //  Object
    console.log(this instanceof String);    // true
    }
    a.call('littledu');
    

    call的用法就是把a对象的作用域作用到传入的参数中去(也可以说传入参数在a对象的环境中执行)。
    再来看slice方法的原理:

    Array.prototype.slice = function(start,end){
    var result = new Array();
    start = start || 0;
    end = end || this.length; //this指向调用的对象,当用了call后,能够改变this的指向,也就是指向传进来的对象,这是关键
    for(var i = start; i < end; i++){
       result.push(this[i]);
          return result;
       }
    

    最后介绍下转成数组的通用方法:

    var toArray = function(s){
      try{
        return Array.prototype.slice.call(s);
          } catch(e){
         var arr = [];
         for(var i = 0,len = s.length; i < len; i++){
         //arr.push(s[i]);
           arr[i] = s[i];  //据说这样比push快
          }
        return arr;
         }
         }
    

    相关文章

      网友评论

          本文标题:javascript中的Array.prototype.slic

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