0

我使用 dojo 1.8 作为 javascript 库。我正在尝试为我的一个项目创建一个小的 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”是一个空对象。

那么我该怎么做这样的事情。JavaScript中是否存在PHP中的“self”之类的东西?在类本身中创建新的 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 回答