Ответ 1
Массивы являются объектами и поэтому могут содержать такие свойства, как методы:
var arr = [];
arr.methodName = function() { alert("Array method."); }
Можно ли добавить метод в массив() в javascript? (Я знаю про прототипы, но я не хочу добавлять метод для каждого массива, в частности, один).
Причина, по которой я хочу сделать это, состоит в том, что у меня есть следующий код
function drawChart()
{
//...
return [list of important vars]
}
function updateChart(importantVars)
{
//...
}
var importantVars = drawChart();
updateChart(importantVars);
И я хочу сделать что-то вроде этого:
var chart = drawChart();<br>
chart.redraw();
Я надеялся, что я мог бы просто приложить метод к тому, что я возвращаю в drawChart()
. Любой способ сделать это?
Массивы являются объектами и поэтому могут содержать такие свойства, как методы:
var arr = [];
arr.methodName = function() { alert("Array method."); }
Да, легко сделать:
array = [];
array.foo = function(){console.log("in foo")}
array.foo(); //logs in foo
Просто создайте экземпляр массива, создайте новое свойство и назначьте ему новую анонимную функцию.
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();
var arr = [];
arr.methodName = function () {return 30;}
alert(arr.methodName);