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

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

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

我怎样才能让它工作?内部函数b我想在此调用后x从函数ax函数访问:ba("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 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");​

像这样b(arguments)将立即调用,返回将是对函数的引用。然后调用时.b("bar"),将调用返回的函数引用。该函数在函数 b 的范围内,因为它是在其中声明的,因此传递给的参数a将可用。

一个工作小提琴:http: //jsfiddle.net/XcgwV/

于 2012-09-23T21:13:17.660 回答
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

将 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 回答