Добавить метод к объекту Array в Javascript?

Можно ли добавить метод для array () в JavaScript? (Я знаю о прототипах, но я не хочу добавлять метод к каждому массиву, только к одному).

Я хочу сделать это потому, что у меня есть следующий код

function drawChart()
{
    //...
    return [list of important vars]
}

function updateChart(importantVars)
{
    //...
}

var importantVars = drawChart();

updateChart(importantVars);

И я хочу иметь возможность сделать что-то вроде этого:

var chart = drawChart();<br>
chart.redraw();

Я надеялся, что смогу просто прикрепить метод к тому, что я возвращаю вdrawChart(), Есть ли способ сделать это?

 Jesse Hattabaugh24 июл. 2014 г., 00:58
Это вполне возможно, но целесообразно ли? Есть ли побочные эффекты? Будет ли мешать метод при переборе по массиву? Учитывается ли метод при получении длины массива?
 user16639010 июл. 2012 г., 23:15
На этот вопрос уже отвечали несколько раз, однако имейте это в виду:methods in JavaScript are first-class [function] values, То есть ониjust functions которые названы - то есть, являются результатом оценки -properties.

Ответы на вопрос(5)

создайте новое свойство и назначьте для него новую анонимную функцию.

var someArray = [];
var someArray.someMethod = function(){
    alert("Hello World!");
}

someArray.someMethod(); // should alert
function drawChart(){
{
    //...
    var importantVars = [list of important variables];
    importantVars.redraw = function(){
        //Put code from updateChart function here using "this"
        //in place of importantVars
    }
    return importantVars;
}

вы получаете доступ к методу сразу после его получения.
то есть

var chart = drawChart();
chart.redraw();
 07 дек. 2017 г., 02:41
Разочаровал, что этот ответ не получил больше голосов. Это единственный, который обращается к OP: как на самом деле встраивать массив с соответствующей функциейin the return result, (Как оказалось, это именно то, что мне нужно было знать. Спасибо, @Aust!)
var arr = [];
arr.methodName = function () {return 30;}
alert(arr.methodName);
 03 мар. 2017 г., 13:08
Хотя этот код может ответить на вопрос, предоставление дополнительного контекста относительно того, как и / или почему он решает проблему, улучшит долгосрочную ценность ответа.
Решение Вопроса

такие как методы:

var arr = [];
arr.methodName = function() { alert("Array method."); }

array = [];
array.foo = function(){console.log("in foo")}
array.foo();  //logs in foo
 10 июл. 2012 г., 23:13
.. кроме как в IE: p ~
 07 апр. 2016 г., 06:43
Комментарий об IE был пару версий назад, это все еще применяется?

Ваш ответ на вопрос