2016-10-25 3 views
0

Моя первая попытка написать функцию прототипа массива.Как использовать функции Array внутри моей собственной функции прототипа Array?

Оригинальный вопрос заключается в следующем,

  1. массив [2, 0, 1, 3]

  2. возвращение 30102, в основном в обратном массив, чтобы быть [3, 1, 0, 2 ]

  3. затем 3 * 1000000 + 1 * 10000 + 0 * 100 + 2

Так я хочу реализовать такое а rray функция сделать это

Array.prototype.blobArray2Int 
    = Array.prototype.blobArray2Int || function() { 

    //Array.prototype.reverse(); 
    Array.prototype = Array.prototype.reverse(); 
    cnt = Array.prototype.reduce(function(total, num) { 
           return total*100 + num; 
          }); 
    return cnt; 
} 

Проблема заключается в том, когда я действительно использует его, массив внутри агрегата становится пустым, (я сделал напечатать массив, когда я использую метод blobArray2Int()).

Как это исправить? Благодаря !

+1

Ну, вы определенно не хотите, чтобы присвоить прототип результата 'reverse'. Вы пытались использовать 'this'? 'this.reduce (function (...' –

+0

Майк, он работает, :) пожалуйста, разместите ваши комментарии снова как ответ, так что я могу принять его, спасибо огромное! – user3552178

ответ

1

Вы должны сослаться на свой массив как this вместо Array.prototype. Так что ваш код должен выглядеть следующим образом:

var a = new Array(2, 0, 1, 3); 
 

 
Array.prototype.blobArray2Int = Array.prototype.blobArray2Int || function() { 
 
    return this.reduceRight(function(total, num) { 
 
    return total * 100 + num; 
 
    }); 
 
}; 
 

 
document.write(a.blobArray2Int());