从对象获取私有变量

时间:2017-07-21 11:12:29

标签: javascript

是否可以从此对象获取私有变量value而无需修改函数Test本身?

function Module(){
    this.get = function(){
        return value;
    }
}

function Test(){
    Module.call(this);
    var value = 14;
}

Test.prototype = Object.create(Module.prototype);
Test.prototype.constructor = Test;

var T = new Test();
T.get();

是否可以以某种方式扩展object / funciton Test以获取变量value

2 个答案:

答案 0 :(得分:6)

  

是否可以从此对象获取私有变量value而无需修改函数Test本身?

没有

另请注意,value在调用Test之前甚至不存在,并且每次调用value时都会创建不同的Test。在这两种情况下,除非在Test内显示闭包,否则Test返回时变量就会消失。

重新提出您的最新问题:答案相同。 value仅在调用Test期间存在。它没有保存在任何地方,也没有任何关闭,因此只要Test返回就会消失。

答案 1 :(得分:0)

哈哈,这太傻了 - 请不要这样做!但总有办法; D

document.getElementById('result').innerHTML = Test.toString().replace("function Test(){\n var value = ","").replace(";\n}","");

https://jsfiddle.net/frj3ej2p/