Подтвердить что ты не робот

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

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

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

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

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

var importantVars = drawChart();

updateChart(importantVars);

И я хочу сделать что-то вроде этого:

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

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

4b9b3361

Ответ 1

Массивы являются объектами и поэтому могут содержать такие свойства, как методы:

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

Ответ 2

Да, легко сделать:

array = [];
array.foo = function(){console.log("in foo")}
array.foo();  //logs in foo

Ответ 3

Просто создайте экземпляр массива, создайте новое свойство и назначьте ему новую анонимную функцию.

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

someArray.someMethod(); // should alert

Ответ 4

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();

Ответ 5

var arr = [];
arr.methodName = function () {return 30;}
alert(arr.methodName);