これが簡単な質問である場合は、ご容赦ください。javascriptで、選択した関数にスコープを持つ変数を作成するにはどうすればよいですか? たとえば、function1() および function2() で更新できる変数 var1 が必要ですが、他の関数では更新できません。出来ますか?
5 に答える
4
IIFE を使用してクロージャーを作成することで、これを行うことができます。
(function() {
var secretVar = 1;
window.func1 = function() { };
window.func2 = function() { };
})();
今だけアクセスできるようになりfunc1()
ますfunc2()
secretVar
于 2013-07-08T13:48:59.383 に答える
1
制限されたスコープでこれらの関数を定義する必要があります
var scope = function() {
var scopedVariable = "Hi";
var func1 = function() { /* hi */ }
var func2 = function() { /* hi */ }
}
// scopedVariable is undefined
于 2013-07-08T13:49:39.857 に答える
1
(function() {
var a = 1;
window.inc = function() {
a++;
}
window.showA = function() {
alert(a);
}
})();
inc();
showA();
于 2013-07-08T13:50:09.957 に答える
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
于 2013-07-08T13:47:23.673 に答える
-2
lodash ( http://lodash.com ) や underscore ( 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'
于 2013-07-08T13:50:34.783 に答える