2017-07-04 30 views
-2

JavascriptはJavaと似ていませんが、JavaのJavascript関数クロージャと同等のものは何ですか?なぜクロージャーが必要なのでしょうか?JavaのJavascript関数クロージャに相当するものは何ですか?

これは私の理解です 1. Javaのプライベート変数と保護された変数は、そのクラスのすべてのメソッドによってアクセスされます。 2. Javaのクラス内の1つのメソッドだけにアクセスできるプライベート変数をインクリメントする方法はありますか? 3.ポイント2の答えがNOの場合、JavaScriptでのクロージャではなぜこのような要件が満たされますか? 4.上記2のような要件には、どこで対処できますか?

+0

"js function closure"という意味の例がありますか? – azro

+0

インスタンス変数とメソッドは、基本的にクロージャの代替手段です。メソッドが認識する変数の量を制限することができるので、私はそれらをもっと好きです。 – byxor

+0

私はなぜ閉鎖が必要か尋ねました。そして、javaに相当するものはありますか? –

答えて

0

javaでは、「閉鎖」は必要ありません。関数内にあるのはこの関数のためのものだけです。静的なものはすべて使用しないでください。

Javaはオブジェクト指向です。オブジェクトの変数には、このオブジェクトのすべてのメソッドがアクセスできます。他のオブジェクトへのアクセスを望まない場合は、 "private"タグを使用してください。

//Class 
public class HelloWorld(){ 
    private int var1; 
    public String var2; 

    // Constructor 
    public HelloWorld(){ 
    } 

    public void function1(){ 
    //here you can use var1 and var2. 
    } 

    private void function2(){ 
    //here you can use var1 and var2. 
    } 

    // If you have a parameter with same name, you should use this 
    private void function3(int var1){ 
    // this.var1 object variable 
    // var1 method variable 
    } 
} 

//From another object: 
public class ByeWorld(){ 

    private HelloWorld anInstanceOfHelloWorld; 

    public ByeWorld(){ 
    anInstanceOfHelloWorld = new HelloWorld(); 

    // var2 is public you can use it (NO RECOMENDABLE) 
    anInstanceOfHelloWorld.var2; 
    anInstanceOfHelloWorld.function1(); 

    // YOU CANT 
    // anInstanceOfHelloWorld.var1 // is private 
    // anInstanceOfHelloWorld.function2() // is private 
    //... 
    } 
} 

私はこれがあなたに役立つことを願っています。

関連する問題