我正在使用dojo 1.8作为javascript库。 我正在尝试为我的项目创建一个小型Vector类。
我已经创建了一个克隆矢量对象的函数克隆。这是我的班级“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实例的正确方法是什么?
答案 0 :(得分: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/