1

私は JavaScript の初心者で、いくつかの基本的なこと (関数、変数など) を学んでいるだけで、JavaScript の複雑な構造についてはあまり知りません。

ある Web アプリケーションのソース コードを読んでいると、理解できない大きなポイントがあります。コードは次のとおりです。

Helper.using('py.Figures' , function (ns) {
    ns.Point = function (params) {
        ns.Figure.call(this, params);
        this.setType('Point');

        this.visual(new Kinetic.Circle({
            radius:5, strokeWidth:2,
            fill:'red', stroke:'black',
            draggable:false
        }));

        this.getX = function () {
        };
        this.getY = function () {
        };
        this.getPosition = function () {
            return {
                x:this.getX(), y:this.getY()
            }
        }

        ns.Point.distance = function (p1, p2) { // some code }

        ns.MidPoint = function (params)  { // some code }       
};

1)上記のコードでわからない最初のポイントは、最初の行の宣言です:

Helper.using('py.Figures' , function (ns) {... } );

このドキュメントの多くのファイルは、この構造を使用しています。このドキュメントには というファイル名がありますが、このドキュメントを検索しても(Control + F を使用して)Helperのようなものは見つかりません。py.Figuresそれで、それは本当に何を指しているのですか?

上記の行は関数のように見えますが、これは何をfunction(ns)意味するのか、パラメーターのように見えますが、そうではないと思います。

2)私が知らない2番目のポイントは次のとおりです。

ns.Pointns.Point.distancens.MidPoint方法論のように見えます。それで、function(ns)クラスですよね?ifns.Pointはメソッドですが、なぜこのメソッドにはgetXandのような他のメソッドがありgetY、それらもクラスのように見えると感じます。

私の質問がばかげている場合は申し訳ありませんが、このコードは私には奇妙に見えます。また、私が学んだ言語 (Java、C#)、または別のスクリプト言語 (Python) になじみのあるものは何もありません。

ありがとう。

4

2 に答える 2

2

1) それfunction (ns) {... }は確かに議論です。関数が解析され、関数へのポインターが関数に渡されますHelper.using。これらは Java では見られませんが、Javascript の素晴らしい点の 1 つだと思います。

これはコールバックを定義する通常の方法であり、その引数関数は実際にコールバックのように見えます。

2) いいえ、nsクラス オブジェクトです。より良いのは、一般的にはObjectです。クラスのインスタンスである必要はありません。Point次に、コールバック関数がオブジェクトのメソッドを定義しますns。メソッドの本体では、オブジェクト を参照するため、メソッドgetXgetYおよび を定義 (または再定義) します。getPositionthisns

もう一度見てみると、ns.Pointは確かに関数ですが、クラス定義として機能する可能性があるため、コードの他の部分ではnew ns.Point(...). これが、Javascript での「クラス」のしくみです。

于 2012-07-28T08:50:40.447 に答える
0

あなたが初心者で、複雑な構造やパターンについての考えを持っていない場合. 変な表現に遭遇した場合に混乱したり混乱したりしないように、先に進む前にまず概念を学ぶ必要があります。あなたのための非常に優れた正確なチュートリアルがあります:http://www.youtube.com/watch?v=gLVmkhLnxwM

私はあなたのコードを説明していないかもしれませんが、私が送ったビデオは本当に役立つと確信しています.

于 2012-07-28T09:32:15.683 に答える