可以在不调用`test`的情况下获得b?

时间:2013-04-24 01:38:47

标签: javascript node.js

我目前正在考虑在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()或类似的东西?还有其他任何反思吗?

1 个答案:

答案 0 :(得分:0)

不使用test?使用其他function

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

    // ...    

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

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

否则,不。该代码段为closure,而只能通过相同范围内定义的函数来访问本地变量是它们的工作方式。