0
function a(x) {
    //...
    return { b: b(arguments) }
}

function b(x, args) {
    // x = foo
    // args[0] = bar
}

a("foo").b("bar");
​

これを機能させるにはどうすればよいですか?関数内で、関数から、およびこの呼び出しの後に関数からbアクセスしたい:xaxba("foo").b("bar");

4

5 に答える 5

1

同じオブジェクトのa()とメソッドを作成し、そのオブジェクトにその引数を格納すると、 からアクセスできます。b()a()b()

function foo() {};
foo.prototype = {
    a: function(x) {
        // do whatever you want
        this.arg = x;
        return(this);
    },
    b: function(y) {
        // y is what is passed here
        // this.arg is what was passed to a
    }
};

var obj = new foo();
obj.a("foo").b("bar");
​
于 2012-09-23T21:14:25.710 に答える
0

どうですか:

function b(x, args) {
    document.writeln("fun b");
    // x = sup
    // args[0] = hi
}

function a(x) {
    document.writeln("fun a");
    return { b1: b }
}

a("foo").b1("bar");
于 2012-09-23T21:18:03.117 に答える
0

これはあなたのために働きますか?

function a(x) {
    return {
        b: function(y) {
            //here you can access both x and y
        }
    }
}
于 2012-09-23T21:10:25.387 に答える
0

b(arguments)すぐに呼び出されるためb(arguments)、関数への参照を返す必要があります。このようなもの:

function a(x) {
    //...
    return { b: b(arguments) }
}

function b(x, args) {
    return function () {
       alert(x[0]); // Will alert foo
    };
}

a("foo").b("bar");​

Like thisb(arguments)はすぐに呼び出され、戻り値は関数への参照になります。次に を呼び出す.b("bar")と、返された関数参照が呼び出されます。その関数は関数 b のスコープ内にあり、関数 b 内で宣言されているため、渡された引数aが使用可能になります。

実用的なフィドル: http://jsfiddle.net/XcgwV/

于 2012-09-23T21:13:17.660 に答える
0

オプションとして a(x) の結果を直接 b() に渡すのはどうですか? お気に入り;

function a(x) {
    return x
}

function b(x, y) {
    var result = y ? x + y : x;
    return result;
}

b(x, a(x));

'a("foo").b("bar")' の呼び出しは、現在のところ、b() が a{} のサブ プロパティであることを意味するため、記述したとおりには機能しません。私にとっては、あなたが何をしようとしているのかについて、もう少し知る必要があるでしょう。

于 2012-09-23T21:36:19.217 に答える