17

javascriptでarray()にメソッドを追加することは可能ですか? (プロトタイプについては知っていますが、すべての配列にメソッドを追加したくはありません。特に 1 つだけです)。

これをやりたい理由は、次のコードがあるからです

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
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();
于 2012-07-10T21:26:15.823 に答える
4

配列をインスタンス化し、新しいプロパティを作成して、新しい無名関数をプロパティに割り当てるだけです。

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

someArray.someMethod(); // should alert
于 2012-07-10T21:11:59.540 に答える