17

是否可以在 javascript 中向 array() 添加方法?(我知道原型,但我不想为每个数组添加一个方法,特别是一个)。

我想这样做的原因是因为我有以下代码

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

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

var importantVars = drawChart();

updateChart(importantVars);

我希望能够做这样的事情:

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

我希望有一种方法可以将方法附加到我要返回的内容上drawChart()。有什么办法吗?

4

5 回答 5

38

数组是对象,因此可以保存诸如方法之类的属性:

var arr = [];
arr.methodName = function() { alert("Array method."); }
于 2012-07-10T21:13:02.707 回答
8

是的,很容易做到:

array = [];
array.foo = function(){console.log("in foo")}
array.foo();  //logs in foo
于 2012-07-10T21:12:21.130 回答
4

只需实例化数组,创建一个新属性,然后为该属性分配一个新的匿名函数。

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

someArray.someMethod(); // should alert
于 2012-07-10T21:11:59.540 回答
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;
}

这样做可以使您在收到该方法后直接访问该方法。
IE

var chart = drawChart();
chart.redraw();
于 2012-07-10T21:26:15.823 回答
0
var arr = [];
arr.methodName = function () {return 30;}
alert(arr.methodName);
于 2017-03-03T10:06:02.353 回答