在javascript中读取命名函数内的变量值
Reading a variable value inside a named function in javascript
这可能很简单,但我在寻找答案时迷路了,
我在Backbone视图中有一个命名函数。我正在尝试为这个命名函数编写单元测试,我可以看到在函数范围中声明了一个变量。此变量的状态会根据某些场景而变化。
我已经在测试套件中实例化了视图对象,当我执行console.log(viewObject.namedFunction)时,我看到整个函数都被正确地记录了下来。现在,我该如何访问namedFunction中的变量,我本来期待着类似viewObject.namedFunction.variableName的东西,但它不起作用,当我这样做时,它没有按预期工作。
如果变量绑定到viewObject作用域,那么访问它会很容易。但在这种情况下不是这样,请有人帮助我从测试套件中获取视图对象中命名函数内的变量。
我想我理解您的困惑,因为当您在window
范围中使用var
定义变量时,它将成为window
对象上的属性。。。这似乎意味着,当您在子作用域中定义变量时,它应该成为本地上下文的成员,对吧?没有。全局参数是特殊的;-)
事实上,如果是的情况,就会有没有隐私!
如果您希望sign
是公共的,请明确。
obj = {
namedFunction : function myself() {
console.log(myself);
myself.sign = 23;
}
};
obj.namedFunction.sign;
这种方法唯一的问题是,您现在可以从任何位置为sign
指定一个新值。解决这个问题的经典方法和首选方法是为您的私有变量创建一个getter函数。
var obj = {
namedFunction : function myself() {
var sign = 3;
myself.getSign = function(){return sign;};
}
};
obj.namedFunction.getSign();
这绝不是唯一的方法,但我希望它能有所帮助。
这样做的一种方法是:
namedFunction = (function(){
var theActualFunction = function(){
//Do something
//Access variable like: theActualFunction.MyVariable
};
theActualFunction.MyVariable = "value";
return theActualFunction;
}());
相关文章:
- 如何通过ajax增加/减少PHP变量值并重新加载函数
- 将变量值传递给另一个函数
- 函数中的$scope变量值没有更改
- 如何在另一个函数中使用函数变量值
- GAS:在处理程序函数中使用变量时,如何更改全局变量值并保留其更改后的值
- 如何访问.net MVC3中javascript函数中的c#变量值
- 在函数内设置全局变量值&if语句
- 在javascript中读取命名函数内的变量值
- 从函数jquery获取更新的变量值
- JavaScript 作用域:在函数后保留全局变量值
- 如何在 jQuery 中的函数之外使用变量值
- JQuery 更改函数外部的变量值
- JS:我如何访问一个函数内的变量值,而另一个函数内部的变量值,并且两个函数属于同一个对象
- 从另一个函数获取 javascript 变量值
- 如何比较两个函数中定义的两个 JavaScript 变量值
- 将变量值发送到点击函数
- 在 jquery 函数中获取变量值为无穷大
- 如何在函数外部访问 Javascript 变量值
- 如何定义从一个函数到另一个函数的变量值
- 将函数变量值传递给javascript中的新变量