如果這是一個簡單的問題,請耐心等待。在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:功能選擇列到變量
可以通過原型定義一些特異性對象和方法還綁定到相同的對象。 –