【问题标题】:Accessing variables from prototype-defined functions从原型定义的函数访问变量
【发布时间】:2018-07-31 09:46:37
【问题描述】:

假设我有这个功能,我正在尝试获取 value1 和 2 的值,正确的方法是什么。 1. 退出函数时如何定义值 1 和值 2 2. 如何在不调用“doSomething”函数的情况下获取另一个函数中的值

test.prototype.doSomething = function (){
    test = new Execution(experiment);

    function experiment(bla) {
        forEach(function(bla) {
            var value1 = bla.value1;
            var value2 = bla.balue2;
            console.log(value1); //defined 
        });
        console.log(value1); //undefined 
    }
    console.log(value1); //undefined
}

test.prototype.testSomething = function() {
    var testSomething = values1;

}

【问题讨论】:

  • 这看起来像XY Problem。你定义这些价值观的方式是:“你没有”。问题是你为什么要这样做?你真正想做什么?
  • 你没有。这些不是“私有”变量,它们只是作用域,一旦最里面的函数退出,它们就会被标记为垃圾回收,因为在那之后它们不再在作用域内。
  • 什么是ExperimentforEachtest?为什么doSomething 会覆盖test?首先如何调用testSometingdoSomething?您想从哪里获得哪个特定值?

标签: javascript prototype private-methods public-method private-functions


【解决方案1】:

您可以尝试通过在实验函数之外声明 value1 和 value2 并将值分配给函数内的这些变量。下面是代码:

test.prototype.doSomething = function (){
var value1, value2;
test = new Execution(experiment);
function experiment(bla) {
    forEach(function(bla) 
        value1 = bla.value1;
        value2 = bla.balue2;
        console.log(value1);  
    });
    console.log(value1); 
}
console.log(value1); 

}

【讨论】:

  • 请不要在没有说明所有重要缺点的情况下提出这个“解决方案”。
猜你喜欢
  • 2010-09-30
  • 2013-08-03
  • 2015-11-08
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 2011-12-08
  • 2021-12-22
  • 1970-01-01
相关资源
最近更新 更多