如果这是一个简单的问题,请耐心等待。在JavaScript中,我如何创建一个变量,它具有所选函数的范围?例如,我希望变量var1可以用function1()和function2()更新,但不能与其他函数一起更新。可能吗?适用于选定功能的变量
0
A
回答
4
有可能通过与IIFE创建一个封闭做到这一点:
(function() {
var secretVar = 1;
window.func1 = function() { };
window.func2 = function() { };
})();
现在只有func1()
和func2()
将能够t O访问secretVar
1
您可以创建范围是这样的:
function MyScope(x) {
this.x = x;
this.function1 = function (val) {
this.x = val;
};
}
然后实例化一个对象会是以下几点:
var myObject = new MyScope(5);
myObject.function1(10); // Changes x to 10
1
你必须定义一个范围有限的功能
var scope = function() {
var scopedVariable = "Hi";
var func1 = function() { /* hi */ }
var func2 = function() { /* hi */ }
}
// scopedVariable is undefined
1
(function() {
var a = 1;
window.inc = function() {
a++;
}
window.showA = function() {
alert(a);
}
})();
inc();
showA();
+1
通常包含某种解释和任何代码是一个好主意。 – Spudley
-2
如果你使用像lodash(http://lodash.com)库或下划线(http://underscore.com),你可以使用_ .bind函数给这个函数一个特定的'this'作用域。
这是从它们的例子在http://lodash.com/docs#bind
var func = function(greeting) {
return greeting + ' ' + this.name;
};
func = _.bind(func, { 'name': 'moe' }, 'hi');
func();
// → 'hi moe'
+0
你没有约束一个变量。你绑定一个常量值'“嗨”'作为'greeting'参数的参数。即使'“hi”存储在一个变量中,你仍然只是绑定变量的当前值,所以这些函数没有共享访问该变量的权限。 –
相关问题
- 1. 适用于xts的功能
- 2. 自定义功能:适用于流
- 3. 使库仅适用于特定功能
- 4. jquery实时功能不适用于特定选择器
- 5. 功能不适用于.CALL
- 6. Oracle绑定变量不适用于ActiveRecord
- 7. 的Javascript如果变量等于变量使能功能
- 8. 功能之外的复选框变量
- 9. 文件名中包含变量 - 如何适用于R的功能和
- 10. Python共享全局变量仅适用于函数内部的功能
- 11. 角:适用功能的HTML可变
- 12. 适用于MS Windows的X11功能
- 13. jQuery的功能只适用于重载
- 14. 适用于多只海龟的功能
- 15. 适用于Android的Firebase云端功能
- 16. 的TeamCity - 适用于构建功能
- 17. 使用适用于R与用户定义的功能
- 18. 程序下面的变换功能适用于灰度图像
- 19. 改变对象的功能仅适用于例如
- 20. jQuery的变化功能仅适用于最接近元素
- 21. JS功能不适用于IE的复选框值
- 22. 定位+ grep的变量在bash功能
- 23. 功能产生不确定的变量
- 24. 功能定义中的配对变量
- 25. 变量函数。未定义的功能
- 26. Ajax Post方法不适用于用户定义的功能
- 27. JavaScript功能不适用于Chrome和IE,但适用于FireFox
- 28. 功能显示基于两个变量
- 29. 改变在主变量的值设定为可用于其它功能(C++)
- 30. SQL:功能选择列到变量
可以通过原型定义一些特异性对象和方法还绑定到相同的对象。 –