0

私はjavascriptライブラリとしてdojo1.8を使用しています。私のプロジェクト用に小さなVectorクラスを作成しようとしています。

ベクトルオブジェクトのクローンを作成する関数cloneを作成しました。これが私のクラス「td/Vector」です

define([
    'dojo/_base/declare',
    'td/Vector'
], function(declare, Vector) {
return declare(null, {

    x: null,
    y: null,

    constructor: function(x, y) {
        this.x = x;
        this.y = y;
    },

    clone: function() {
        return new Vector(this.x, this.y);
    },

    length: function() {
        return Math.sqrt((this.x * this.x) + (this.y * this.y));
    },

    normalize: function() {
        var length = this.length();
        this.x = this.x / length;
        this.y = this.y / length;
    },

    distance: function(target) {
        return new Vector(target.x - this.x, target.y - this.y);
    }
});
});

今私の問題:

変数「Vector」は空のオブジェクトです。

では、どうすればこのようなことができますか。PHPの「自己」のようなものがJavaScriptに存在しますか?クラス自体にselfの新しいインスタンスを作成する正しい方法は何ですか?

4

1 に答える 1

2

Vector変数はtd/Vectorモジュールの戻り値です。つまり、上記td/Vector.jsのクラスではなくファイルですdeclare。これが空のオブジェクトである理由です。

クラス自体を参照するには:

define(["dojo/_base/declare"], function(declare) {

    var Vector = declare(null, {    

        constructor: function(x, y) {
            this.x = x;
            this.y = y;
        },

        clone: function() {
            return new Vector(this.x, this.y);
        }
    });

    return Vector;

});

jsFiddleで実際の動作を確認してください:http://jsfiddle.net/phusick/QYBdv/

于 2012-09-30T17:36:29.680 に答える