1

我目前正在考虑在 node.js 中实现一个包含其他应用程序的虚拟机。为此,我将覆盖一些基础知识,但有一点我不确定。

var A = (function() {
    var b = 1;

    var A = function() {};
    A.prototype.test = function() { // Can't touch this
        return b;
    };
    A.prototype.foo = function(callback) {
        callback();
    };
    return A;
})();

// Objective: Get b without touching `test` in any way

这有可能吗?通过注入原型或使用 call()、apply()、bind() 或类似方法?还有什么反映吗?

4

1 回答 1

0

不使用test? 使用不同的function

var A = (function() {
    var b = 1;

    // ...    

    A.prototype.foo = function () {
        return b;
    };
    return A;
})();

console.log(new A().foo());

否则,没有。该片段是一个闭包,并且只能通过在同一范围内定义的函数访问局部变量是它们的工作方式。

于 2013-04-24T01:48:05.197 回答